생성자는 클래스로부터 객체를 생성할 때 호출되는 특별한 메서드.
클래스 이름과 동일한 이름을 가지며, 리턴 타입이 없다.
public class Person {
String name;
int age;
// 생성자
public Person(String n, int a) {
name = n;
age = a;
}
}
위 코드에서 Person 클래스의 생성자는 객체가 생성될 때 자동으로 호출되어 name과 age 값을 초기화해 준다.
생성자를 하나도 정의하지 않으면, 자바는 자동으로 기본 생성자를 만들어 준다.
public class Dog {
String breed;
// 기본 생성자: Dog() {} 가 자동으로 추가됨
}
하지만 생성자를 하나라도 직접 만들면, 기본 생성자는 자동으로 만들어지지 않으니 주의.
생성자도 오버로딩 가능하다.
public class Car {
String model;
int year;
// 생성자 1
public Car(String m) {
model = m;
year = 2020;
}
// 생성자 2
public Car(String m, int y) {
model = m;
year = y;
}
}
this()를 사용하면 같은 클래스 내의 다른 생성자를 호출할 수 있다.
중복 코드를 줄이는 데 유용하다.
public class Book {
String title;
int price;
public Book(String title) {
this(title, 0); // 아래 생성자 호출
}
public Book(String title, int price) {
this.title = title;
this.price = price;
}
}
객체 초기화: 필드를 생성과 동시에 초기화할 수 있다.
코드 가독성 향상: 객체를 생성하는 시점에서 필요한 값을 명확하게 전달한다.
객체의 불완전한 상태 방지: 필수 값을 반드시 받도록 강제할 수 있다.