본문 바로가기
Java

[Java] 생성자(Constructor)에 관해서 / Default 생성자 / 생성자 오버로드 / 초기화 동시에 클래스 생성

by bkuk 2022. 9. 30.

생성자(Constructor)란?

 

 

위 코드를 보면 클래스를 생성할 때 사용하는 Constructor() 같은 함수 생성자라고 표현합니다.

클래스의 멤버 변수는 메서드에 의해 할당될 수 있지만, 처음 클래스를 생성할 때 값을 정해야 하는 경우가 있습니다.

생성자는 이러한 상황에서 멤버 변수나 상수를 초기화하는 일을 합니다.

 

Default 생성자

 

생성자 클래스를 생성할 때만 호출합니다. 또, 생성자 이름은 클래스 이름과 같아야 합니다. 

생성자는 반환 값이 없으므로, return을 사용할 수 없다고 알고 있으면 됩니다.

위 예제인  Constructor 클래스를 살펴보면 생성자가 따로 없었습니다. 

하지만 new Constructor() 를 통해 객체를 만들 수 있었습니다.

생성자가 없는 클래스는 클래스 파일을 컴파일할 때 자바 컴파일러에서 자동적으로 생성자를 만들어줍니다.

이떄 자동으로 만들어 주는 생성자를 default 생성자라고 부르며, 매개변수와 코드가 없습니다.

 

Default 생성자가 아닌 생성자를 만들기

 

예를 들면  Constructor 클래스를 통해 객체를 만들때 무조건

"name" 이라는 매개변수를 받아서 초기화를 진행해야 하는 상황이라는 가정을 해보겠습니다.

이러한 상황일 때는 default 생성자가 아닌 매개변수를 받는 생성자를 만들 수 있습니다.

위 생성자는 문자열 String형 매개변수를 입력받아 "name"을 지정합니다.

 

이때, 컴파일을 진행하면 오류가 발생하는데 

자바 컴파일러는 생성자가 하나도 없는 경우에만 default 생성자를 생성합니다.

또한, 컴파일을 위해서는 default 생성자가 필수로 존재해야합니다.

 

 

아래와 같이 Constructor 클래스를 생성할 때 두 개의 생성자를 한 개를 선택해서 초기화를 진행할 수 있습니다.

 

 

매개변수가 다른 생성자를 여러개

 

아래 클래스를 보면 생성자 오버로드를 통해 여러가지 생성자를 제공하고 있습니다.

사용자는 이 클래스를 이용하여 인스턴스를 만드는 경우에 생성자를 골라서 사용할 수 있습니다.

 

매개변수가 있는 생성자를 사용하면?

생성자 내부에서 변수를 초기화할 수 있도록 구현되어 있으므로, 코드가 간결해지며 사용이 편합니다.