생성자는 메소드다.
인스턴스가 생성될 때 호출되는 인스턴스 초기화 메소드이며 인스턴스 변수의 초기화 작업 혹은 인스턴스 생성 시 실행되어야 하는 기능을 선언한다.
public class Test{ // 클래스명 Test
Test(){ //생성자명 Test, 기본 생성자
...
}
}
인스턴스를 생성하기 위해서는 모든 클래스는 반드시 하나 이상의 생성자가 정의되어 있어야 한다.
그러면 프로그래밍을 진행할 때 직접 생성자를 정의해서 해야하는 건가? 그런데 생성하지 않아도 프로그램이 잘 실행되었는데? 라고 생각한 경험이 있다. 여기에 대한 해답은
생성자를 직접 정의하지 않아도 컴파일러가 제공하는 기본 생성자가 있기 때문에 생성자를 정의하지 않고도 인스턴스를 생성할 수 있는 것이다. 컴파일러의 기본 생성자 정의 조건은 클래스에 정의된 생성자가 없을때만 추가를 해준다.
생성자에 매개변수를 선언하여 호출하는 경우는 value를 넘겨 받아서 인스턴스 초기화 작업에 사용할 수 있다. 인스턴스 생성 후, 인스턴스 변수의 값을 초기화하는 방법보다 생성자를 사용하는 것이 코드를 간결하게 만드는 장점이 있다.
//case 1 - 인스턴스 생성 후 인스턴스 변수 초기화
class People {
String name;
double grade;
int phoneNumber;
People p1 = new People(); // 인스턴스 생성
//인스턴스 변수 초기화
p.name = "john"
p.grade = "4.0"
p.phoneNumber = "010"
}
//case 2 - 매개변수 생성자로 초기화
People(String n, double g, int p){
name = n;
grade = g;
phoneNumber = p;
}
People p2 = new People("john", "4.0", "010");
this를 붙인다.class People {
String name;
double grade;
int phoneNumber;
People(String name, double grade, int phoneNumber) {
this.name = name;
this.grade = grade;
this.phoneNumber = phoneNumber;
}
this()로 호출 가능