생성자(Constructor) 란?
- 인스턴스 생성 시 호출되는 인스턴스 초기화 메소드를 말한다.
- 인스턴스 변수의 초기화 작업에 주로 사용된다.
- 생성자 명은 클래스명과 같다.
- 리턴 값이 없다.
1. 기본 생성자
- 컴파일러가 제공하는 기능이다.
- 클래스에 생성자가 정의되지 않은 경우 컴파일러가 자동적으로 기본 생성자를 추가하여 컴파일 한다.
- '클래스 내에 생성자가 하나도 없을 때'에만 자동 생성된다.
2. 매개변수가 있는 생성자
class House {
int desposit; //보증금
int monthlyRent; //월세
int utilityBill; //공과금
House() {} //생성자
House(int d, int m, int u) { //생성자
desposit = d;
monthlyRent = m;
utility = u;
}
}
- House 인스턴스를 생성할 시, 매개변수가 있는 생성자를 사용하면 인스턴스 생성과 함께 값을 초기화 할 수 있다. (코드를 간결하게 만들어 준다.)
//기본생성자 사용시
House house = new House();
house.deposit = 20000000;
house.monthlyRent = 500000;
house.utilityBill = 100000;
//매개변수 있는 생성자 사용 시
House house = new House(20000000,500000,100000);
3. 생성자에서 다른 생성자 호출 - this
- 생성자 간에도 서로 호출이 가능하다.
- 생성자 명을 클래스 명 대신 this를 사용한다.
- 반드시 첫 줄에서만 호출이 가능하다.
class House {
int desposit; //보증금
int monthlyRent; //월세
int utilityBill; //공과금
House() {
//House(int desposit, int monthlyRent, int utilityBill)이 호출된다.
this(5000000,700000,100000);
}
House(int desposit, int monthlyRent, int utilityBill) {
this.desposit = desposit;
this.monthlyRent = monthlyRent;
this.utility = utility;
}
}
- 인스턴스 변수 앞에 this 를 붙여주는 이유는 인스턴스 변수와 매개변수를 구분짓기 위함이다.
- this는 인스턴스 멤버만 사용할 수 있다. (클래스 메소드에서는 사용이 불가하다.)