객체를 생성하는 역할을 하는 클래스의 구성 요소, 인스턴스가 생성될 때 호출되는 인스턴스 초기화 메서드라 한다.
new 키워드를 사용하여 객체를 생성 할때 호출되는 것이 생성자이다.
생성자는 인스턴스 변수들을 초기화하는 데 사용되는 특수한 메서드
class_name(매개변수){
...생략...
}
생성자도 오버로딩이 가능하다.
모든 클래스에는 반드시 하나 이상의 생성자가 존재해야 한다.
만약 생성자가 클래스 안에 포함되어 있지 않은 경우 자바 컴파일러가 기본 생성자를 자동을 추가해준다.
매개변수가 있는 생성자는 메서드처럼 매개변수를 통해 호출 시에 해당 값을 받아 인스턴스를 초기화하는 데 사용된다.
같은 클래스 안에 메서드들끼리 서로 호출할 수 있었던 것처럼 생성자도 상호 호출이 가능하다. 이때 사용하는 것이 this() 메서드다.
this() 메서드는 자신이 속한 클래스에서 다른 생성자를 호출하는 경우에 사용
this() 메서드를 사용하기 위해 2가지 충족
public class Test {
public static void main(String[] args) {
Person person = new Person();
Person person2 = new Person(5);
}
}
class Person {
public Person() {
System.out.println("Person 기본 생성자 호출!");
};
public Person(int x) {
this();
System.out.println("Person 두 번째 생성자 호출!");
}
}
//Output
Person 기본 생성자 호출!
Person 기본 생성자 호출!
Person 두 번째 생성자 호출!
인스턴스 변수와 매개변수를 이름만으로 구분하기가 어려워지는 문제가 발생하게 되는데, 이를 구분해주기 위한 용도로 사용되는 방법이 this 키워드이다.
모든 메서드에는 자신이 포함된 클래스의 객체를 가리키는 this라는 참조변수가 있는데 일반적으로 컴파일러가 this.를 추가해줘서 생략하는 경우가 많다.
this는 인스턴스 자신을 가리키며, 우리가 참조변수를 통해 인스턴스의 멤버에 접근할 수 있는 것처럼 this를 통해 인스턴스 자신의 변수에 접근할 수 있다.