같은 클래스 멤버들 간에는 인스턴스 생성 없이 서로 호출할 수 있는 거처럼(단, 클래스 멤버(static method)는 인스턴스 멤버(method)가 인스턴스 생성되야만 호출 가능) 생성자 간에도 두 조건이 만족되면 서로 호출이 가능함
this()
를 사용함아래 코드는 생성자를 작성할 때 지켜야할 두 조건을 만족하지 못함
Car(String color) {
door = 5;
Car(color, "auto", 4); // 에러1. 생성자의 두 번째 줄에서 다른 생성자 호출
// 에러2. this(color, "auto", 4); 로 해야함
}
예제)
class Car {
String color; // 색상
String gearType; // 변속기 종류 - auto(자동), manual(수동)
int door; // 문의 개수
Car() { // 매개변수가 없을시, 차 디폴트 속성
this("white", "auto", 4);
}
Car(String color) { // 색만 변경 가능
this(color, "auto", 4);
}
Car(String color, String gearType, int door) { // 풀 옵션(커스터마이징 가능)
this.color = color; // 인스턴스 변수와 구분하기 위해 this
this.gearType = gearType;
this.door = door;
}
}
Car(String color, String gearType, int door) { // 풀 옵션(커스터마이징 가능)
this.color = color; // 인스턴스 변수와 구분하기 위해 this
this.gearType = gearType;
this.door = door;
}
this
는 참조변수로 인스턴스 자신을 가리킴