새로운 인스턴스를 만들때 사용되는 인자를 일컫는다.
클래스를 만들고, 클래스 속성과 메소드에 접근하기 위해 참조변수에 인스턴스를 할당해주었다.
public class Car{
String name;
}
이 class를 다른 참조변수가 가르키도록 인스턴스를 선언해줄때
public static void main(String[] args){
Car c1 = new Car();
}
위와 같이 선언해주게 되고, 이때 new 연산자 다음에 사용된 Car() 인자가 바로 생성자이다.
위에서 new 연산자 다음에 오는 인자가 생성자라고 해서, 구조적으로 다소 생소하게 보일 수 있는데 사실 생성자는 하나의 class를 생성할때 바로 정의되는 인자이다.
public class Car{
public class(args){
..
}
fields ...
..
public void main(args){
}
}
fields, 메소드와 구조적으로 약간의 차이가 있다.
즉 위의 경우엔 인자가 있는 생성자가 만들어진 경우고, 위 과정이 누락되었다면 매개변수가 없는 생성자가 컴파일 시 자동으로 생성된다.
※ 자동으로 생성되는 생성자를 기본 생성자라 일컫는다.
생성자는 객체를 생성할 때(=인스턴스) 특정 인자(값)을 fields 초기화에 사용하는데, 대부분의 인스턴스 선언 시 사용하는 방법이므로 생성자를 별도로 선언해주는 것이 좋다.
즉, 기본 생성자보다는 직접 생성자(인자가 있는 생성자)를 선언해주는 방향으로 생성해야 이후 fields 초기화에 적합하다고 볼 수 있다.
public class Car{
String name;
public Car(String n){
name = n;
}
}
이처럼 Car class 내부에 Car 클래스에 대한 생성자가 선언되었고, 문자열 인자(n)을 받아 내부 fields에 초기화하는 방식으로 구성되었다.