인스턴스가 생성될 때마다
new연산자에 의해 호출되는인스턴스 초기화 메서드

객체 준비: 생성자는 객체 사용을 준비하는 단계에서, 즉 객체가 생성되기 전에 필드 초기화 방법을 정한다.
객체 생성 및 초기화: new 연산자와 함께 생성자가 호출되면 자신이 가지고 있는 멤버들을 메모리에 올려 객체가 메모리에 생성되도록 하는 역할을 한다. 해당 객체의 주소가 반환되며 이 과정에서 필드가 초기화된다.
동일한 초기값 문제: 클래스에서 필드를 선언하면서 바로 초기화하면, 모든 객체가 동일한 값을 가지게 된다.
기본값 초기화 문제: 반대로, 초기화를 하지 않으면 모든 필드가 기본값으로 설정되어, 객체 생성 후에 필드 값을 변경해야 한다.
Dog d = new Dog();
d.name = 'dog name';
d.age = 13;
// ...
객체를 생성하는 시점부터 필드를 다양하게 초기화하도록 생성자를 제공한 것이다.
public이어야만 호출될 수 있다.void를 명시하지 않는다.public class Car{
public Car(){
// 컴파일러에 의해서 생성된 디폴트 생성자는 내용 없음
}
private String name;
private int price;
}
public class Car{
public Car(String name, int price){
this.name = name;
this.price = price;
}
private String name;
private int price;
}
public class Car{
public Car(){
this("car name", 20000);
}
public Car(String name, int price){
this.name = name;
this.price = price;
}
private String name;
private int price;
}
this 키워드 사용class Car{
public Car(){
this("car name", 20000);
}
public Car(String name, int price){
this.name = name;
this.price = price;
}
public Car(Car c){
name = c.name;
price = c.price;
// 또는 this(c.name, c.price);
}
private String name;
private int price;
}
참고: this 키워드의 사용은 필수적이지 않으며, 주로 필드(클래스 변수)와 매개변수 이름이 같을 때 혼동을 방지하기 위해 사용.
자신을 가리키는 객체 변수(참조 변수, 포인터 변수).
객체가 생성된 후, 자기 자신을 가리키는(자신의 주소를 참조하는) 레퍼런스 변수인this가 생성된다.