09-3. 생성자

KIHYUK MOON·2023년 1월 12일
0
post-thumbnail

생성자(constructor)는 new 연산자로 클래스로부터 객체를 생성할할 때 호출되어서 객체의 초기화를 담당한다.
객체 초기화란 필드를 초기화 하거나 메소드를 호출해서 객체를 사용할 준비를 하는 것을 말한다.

기본 생성자

모든 클래스에는 생성자가 반드시 존재하고, 하나 이상 가질 수 있다. 클래스가 public class 로 선언되면 기본 생성자에서도 public 이 붙고, 반대로 클래스가 public 없이 class 로만 선언되면 기본 생성자에도 public 이 붙지 않는다.

생성자 선언

기본 생성자 대신 생성자를 명시적으로 선언할 수 있다.

클래스 (매개변수선언, ...) {
// 객체의 초기화 코드
}

생성자는 리턴 타입이 없고 클래스 이름과 동일하다.

매개 변수는 new 연산자로 생성자를 호출할 때 외부의 값을 생성자 내부로 전달하는 역할을 한다. 매개 변수 선언은 생략할 수도 있고 여러 개를 선언해도 좋다.

클래스에 생성자가 명시적으로 선언되어 있을 경우에는 반드시 매개 변수가 선언된 생성자를 호출해서 객체를 생성해야만 한다.

ex )

Car myCar = new Car("그렌져". "검정", 300); // 명시적 선언

Car(String name, String color, int maxSpeed) { // 매개 변수가 선언된 생성자
}

필드 초기화

클래스로부터 객체가 생성될 때 필드는 기본 초기값으로 자동 설정된다. 다른 값으로 초기화 하고 싶다면 필드를 선언할 때 초기값을 주는 방법이 있고, 생성자에서 초기값을 주는 방법*이 있다.

일반적으로 매개변수의 이름은 필드와 동일한 이름을 사용한다. 그러나 필드와 매개 변수 이름이 동일하다면 생성자 내부에서 해당 필드에 접근할 수 없다. 이때 필드 앞에 this.을 붙인다.

ex)

public Korean(String name, String ssn) {
	this.name = name;
    	//필드   //매개 변수
    this.ssn = ssn;
        //필드   //매개 변수

필드들을 모두 생성자에서 초기화한다면 생성자의 매개 변수 수는 객체의 필드 수만큼 선언되어야 한다.

생성자 오버로딩

자바는 다양한 방법으로 객체를 생성할 수 있도록 생성자 오버로딩을 제공한다. 생성자 오버로딩이란 매개 변수를 달리하는 생성자를 여러 개 선언하는 것을 말한다.
주의할 점은 매개 변수와 타입과 개수 그리고 선언된 순서가 똑같을 경우 매개 변수 이름만 바꾸는 것은 생성자 오버로딩이 아니라는 점이다.

생성자가 오버로딩되어 있을 경우, new 연산자로 생성자를 호출할 때 제공되는 매개값의 타입과 수에 의해 호출될 생성자가 결정된다.

다른 생성자 호출: this()

생성자 오버로딩이 많아질 때 중복 코드를 줄여준다. 필드 초기화 내용을 한 생성자에만 집중적으로 작성하고 나머지 생성자는 초기화 내용을 가지고 있는 생성자를 호출해 사용한다. this()는 생성자의 첫 줄 에서만 허용된다.

profile
개발자 전직중..

0개의 댓글