인스턴스가 생성될 때 호출되는 인스턴스 초기화 메서드
생성자 조건
생성자의 이름은 클래스의 이름과 같아야한다.
생성자는 리턴값이 없다.
Card c = new Card();
// 1. 연산자 new에 의해 메모리(heap)에 Card 클래스의 인스턴스가 생성
// 2. 생성자 Card()가 호출 되어 수행
// 3. 연산자 new의 결과로 생성된 Card 인스턴스의 주소가 반환되어 참조변수 c에 저장
모든 클래스에는 반드시 하나 이상의 생성자가 정의 되어 있어야 한다.
컴파일러가 기본 생성자를 제공하므로 우리는 따로 정의하지 않고도 인스턴스를 생성할 수 있다.
컴파일러가 자동적으로 기본 생성자를 추가해주는 경우는 클래스 내에 생성자가 하나도 없을 때 뿐이다.
class Car {
String color;
String gearType;
int door;
Car() {} // 생성자
Car(String color, String gearType, int door) { // 생성자
this.color = color;
this.gearType = gearType;
this.door = door;
}
Car(String color) {
this(color, "auto", 4); // 생성자에서 다른 생성자 호출하기
}
}
class CarTest {
Car car = new Car("white", "auto", 4);
}
💡 첫 줄에서만 호출이 가능한 이유는 생성자 내에서 초기화 작업 도중에 다른 생성자를 호출하게 되면, 호출된 다른 생성자 내에서도 멤버 변수들의 값을 초기화 할 것이므로 다른 생성자를 호출 하기 이전의 초기화 작업이 무의미해질 수 있기 때문