인스턴스가 생성될 때 호출되는 인스턴스 초기화 메소드
스파일의 클래스에 생성자가 하나도 정의되어있지 않으면 컴파일러가 자동으로 기본 생성자를 생성해서 컴파일해준다. 단, 기본 생성자가 컴파일러에 의해서 추가되는 경우는 클래스에 정의된 생성자가 하나도 없을 때 뿐이다.
생성자 간 서로 호출시에 사용된다. 단 생성자의 이름으로 클래스의 이름 대신 this를 사용해야 하고, 반드시 첫 줄에서만 호출이 가능하다.
class Car {
String color;
String gearType;
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.gearType = gearType;
this.door = door;
}
}
class CarTest2 {
public static void main(String[] args) {
Car c1 = new Car();
Car c2 = new Car("blue");
System.out.println("c1의 color=" + c1.color + ", gearType=" + c1.gearType+ ", door="+c1.door);
System.out.println("c2의 color=" + c2.color + ", gearType=" + c2.gearType+ ", door="+c2.door);
}
}
현재 사용하고 있는 인스턴스의 값을 복사하여 이와 같은 값을 가지는 인스턴스를 만들 때 생성자를 사용할 수 있다.
class Example {
int value1;
int value2;
Example(int value1, int value2) {
this.value1 = value1;
this.value2 = value2;
}
Example(Example ex) {
this(ex.value1, ex.value2);
}
}