객체를 생성하는 역할을 하는 클래스의 구성 요소로, 인스턴스가 생성될 때 호출되는 인스턴스 초기화 메서드이다.
(new 키워드를 사용하여 객체를 생성할 때에 호출되는 것)
그러나, 생성자가 인스턴스를 생성하는 역할을 하는 것은 아니다.
인스턴스 생성을 담당하는 것은 new 키워드이며, 생성자는 인스턴스 변수들을 초기화하는 데 사용되는 특수한 메서드라 할 수 있다.
특징
클래스명(매개변수) { // 생성자 기본 구조
...생략...
}
모든 클래스에는 반드시 하나 이상의 생성자가 존재해야 한다
만약 생성자가 클래스 안에 포함되어 있지 않은 경우에는 자바 컴파일러가 기본 생성자를 자동으로 추가해준다
기본 생성자는 매개변수가 없는 생성자를 의미
매개변수가 있는 생성자는 메서드처럼 매개변수를 통해 호출 시에 해당 값을 받아 인스턴스를 초기화하는 데 사용된다.
매개변수가 있는 경우에는 그 개수와 타입에 알맞게 생성자를 호출해주어야 한다.
인스턴스 변수와 매개변수를 이름만으로는 구분하기가 어려워지는 문제가 발생하게 되는데, 이를 구분해 주기 위한 용도로 주로 사용되는 방법
this는 인스턴스 자신을 가리키며, 참조변수를 통해 인스턴스의 멤버에 접근할 수 있는 것처럼 this를 통해서 인스턴스 자신의 변수에 접근할 수 있는 것이다.
같은 클래스 안에 메서드들끼리 서로 호출할 수 있었던 것처럼 생성자도 상호 호출이 가능하다.
this() 메서드 사용 조건
this() 메서드는 반드시 생성자의 내부에서만 사용할 수 있다.
this() 메서드는 반드시 생성자의 첫 줄에 위치해야 한다.
class Example {
public Example() {
System.out.println("Example의 기본 생성자 호출!");
};
public Example(int x) {
this(); //여기서 사용
System.out.println("Example의 두 번째 생성자 호출!");
}
}