[Java] 4.4.2 생성자 중복 정의, this, this()

4.4.2 생성자 중복 정의, this, this()

 

앞에서 설명한 것처럼 개체를 생성할 때는 new 키워드와 함께 생성할 개체 형식 명과 생성자 메서드의 입력 인자를 전달합니다. 특히 생성자 메서드는 다른 메서드처럼 메서드 중복 정의 대상이므로 생성에 필요한 인자 종류를 다르게 정의할 수 있습니다.

 

예를 들어 회원을 클래스로 정의하고 멤버 필드로 회원 아이디, 이름, 나이를 캡슐화한다고 가정합시다. 이 때 아이디만 입력 인자로 받는 생성자, 아이디와 이름을 입력 인자로 받는 생성자, 아이디와 이름과 나이를 입력 인자로 받는 생성자를 정의하여 필요에 따라 원하는 형태의 개체를 생성할 수 있다는 것입니다.

 

그리고 멤버 메서드 내부에서 입력 인자와 멤버 필드의 이름이 같을 때 this 키워드를 이용하면 멤버 필드에 접근할 수 있습니다. 그리고 생성자에서 this()를 통해 다른 생성자를 호출할 수도 있습니다.

[소스 4.11] 생성자 중복 정의 및 this, this() 사용 예

실행 결과

 

만약 생성자 메서드를 정의하지 않으면 매개 변수가 없는 기본 생성자가 자동으로 만들어지며 이를 디폴트 생성자라 부릅니다.

[소스 4.12] 생성자 메서드를 정의하지 않을 때 디폴트 기본 생성자가 동작하는 예

실행 결과

 

물론 기본 생성자(매개 변수가 없는 생성자)를 정의할 때도 개체 생성할 때 인자를 전달하지 않는 기본 생성을 할 수 있습니다.

[소스 4.13] 기본 생성자를 정의한 후 개체를 기본 생성 요청하는 예

실행 결과

 

하지만 생성자 메서드를 하나라도 정의하면 디폴트 생성자는 만들어지지 않습니다. 따라서 매개 변수가 있는 생성자 메서드만 정의한 클래스 형식의 개체를 생성할 때는 반드시 인자를 전달하여 개체를 생성해야 합니다.

[소스 4.14] 매개 변수 있는 생성자 메서드만 정의한 개체를 기본 생성 요청시 오류

오류 내용