5.4 생성자에서 다른 생성자 호출하기 - this(), this

같은 클래스 멤버들 간에는 인스턴스 생성 없이 서로 호출할 수 있는 거처럼(단, 클래스 멤버(static method)는 인스턴스 멤버(method)가 인스턴스 생성되야만 호출 가능) 생성자 간에도 두 조건이 만족되면 서로 호출이 가능함

아래 코드는 생성자를 작성할 때 지켜야할 두 조건을 만족하지 못함

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;
  }