- 객체를 생성할 때 호출되는 특별한 메서드이다
- 클래스와 동일한 이름을 가지고 있으며, 반환 타입이 없다
- 클래스 내부의 필드를 초기화하고 객체를 사용할 수 있도록 준비한다
객체를 생성할 때 new 키워드와 함께 생성자를 호출할 수 있다
Person person = new Person("Jake", 25);
생성자는 기본 생성자와 매개변수가 있는 생성자로 나눌 수 있다.
매개변수가 없는 생성자
- 모든 클래스는 기본 생성자를 가지고 있다
- 클래스를 정의할 때 별도의 생성자를 작성하지 않으면 자동으로 생성된다
- 클래스의 이름과 동일하며, 아무런 매개변수도 없다
public class Sample {
// 기본 생성자
public Sample() {
// 생성자 본문
}
}
필드를 초기화하는 등의 작업이 필요한 경우에는 명시적으로 생성자를 작성해야 한다.
Sample sample = new Sample();
생성자가 호출될 때 매개변수를 전달받아 객체의 필드를 초기화하는 생성자
- 객체를 생성할 때 필드를 초기화하는 값을 전달받아 초기화
- 객체를 생성할 때 초기화할 값을 미리 전달할 수 있으므로 객체 생성 후에 별도의 초기화 작업을 하지 않아도 된다
public class Sample {
private int num;
private String str;
// 매개변수가 있는 생성자
public Sample(int num, String str) {
this.num = num;
this.str = str;
}
}
Sample sample = new Sample(5, "Hello");
인스턴스 변수와 지역 변수의 이름이 같을 때 인스턴스 변수를 참조하기 위해 사용되는 키워드
public class Sample {
private int num;
public void setNum(int num) {
this.num = num;
}
}
같은 클래스 내의 다른 생성자를 호출할 때 사용
public class Sample {
private int num;
private String str;
public Sample(int num, String str) {
this.num = num;
this.str = str;
}
public Sample() {
this(0, ""); // 다른 생성자 호출
}
}