파일 1개당 클래스 1개 정의(권장사항). 목적이 같은 코드를 물리적으로 분리시켜 코드 관리가 효율적으로 이루어지도록 한다. 파일명만 봐도 어떤 클래스가 있는지 알아볼 수 있도록. 그리고 재사용도 편해진다.
반드시 클래스명과 파일명이 동일해야 한다. 동일하지 않으면 컴파일에러가 난다.
하나의 파일에는 하나의 public클래스가 있어야 한다. (대표클래스)(여러 클래스가 한 파일에 존재할 때 어느 클래스명이 파일명과 같아야 할지 모르기 때문에)
// TODO
위와 같이 주석을 달면 나중에 tasks에서 TODO만 확인할 수 있다.
FIXME는 중요태그이다.
값형과 참조형이 매개변수로 사용될 때의 상황에서
1. 값형(값을 복사해서 전달) : 사이드 이펙트 無
2. 참조형(주소값을 복사해서 전달) : 사이드 이펙트 有
참조형 타입이 매개변수로 전달될 때는 주소값이 복사
int weight=40;
String size="A4";
Calendar c=Calendar.getInstance();
Paper p1=new Paper();
p1.setWeight(weight);
p1.setSize(size);
p1.setCreationTime(c);
System.out.println(p1.getWeight());
System.out.println(p1.getSize());
System.out.printf("%tF\n", p1.getCreationTime());
weight=50;
c.add(Calendar.DATE, 7); // 시간을 일주일 뒤로.
System.out.println(p1.getWeight()); // 무게는 40으로 계속 유지된다.
System.out.println(p1.getSize());
System.out.printf("%tF\n", p1.getCreationTime()); // 하지만 시간은 일주일 뒤로 바뀐다.
1. 배열변수만들어서 set
String[] parent= {"홍아빠", "김엄마"};
b1.setParent(parent);
2. 변수없이 set안에서 생성
b1.setParent(new String[]{"홍아빠", "김엄마"});
3. 배열요소들 입력받아서 setter안에서 설정
b1.setParent("홍아빠", "김엄마");
public void setParent(String father, String mother) {
this.parent=new String[] {father, mother};
}
// 아래의 경우는 안됨!!!
b1.setParent({"홍아빠", "김엄마"});
아래와 같은 방법으로 get할 수 있다.
System.out.println(b1.getParent()[0]);
System.out.println(b1.getParent()[1]);
이 때는 부모 전체 다 가져올 때이고, 배열요소 중 일부를 가져오고 싶을 때는 아래와 같이 코드를 작성하면 된다.
1. 메서드 2개
public String getFather() {
return this.parent[0];
}
public String getMother() {
return this.parent[1];
}
2. 메서드 1개, 인자로 구분.
// 숫자 이용하는 방법(그 숫자의 의미를 모르면 불편함)
public String getParent(int n) {
if (n==1) {
return this.parent[0];
}else {
return this.parent[1];
}
}
// String 이용하는 방법(어떤 단어를 넣어야 결과가 나오는지 모름)
public String getParent(String n) {
if (n.equals("아빠")) {
return this.parent[0];
}else {
return this.parent[1];
}
}
객체의 멤버를 초기화하는 목적을 가지고 있는 메서드. 사용법이 일반 메서드와는 상이함.
반환 타입이 없고 이름이 클래스명과 동일하다.(이름을 마음대로 정할 수 없다.)
객체 생성 직후 객체의 초기 상태를 설정.
호출은 생성할 때 1번만 가능!
// 기본 생성자
// - 개발자가 명시적으로 선언하지 않아도 컴파일러가 만들어주는 생성자
public Person() {
this.name=null;
this.age=0;
}
public Person(String name, int age) {
this.name=name;
this.age=age;
}
생성하면서 초기화시킬 값을 미리 인자로 받아서 생성과 동시에 초기화시킨다. 개발하는 개발자를 위해 객체를 생성하고 초기화하는 방법이 다양해졌다.