⛏️/JAVA

[JAVA] 11. 생성자(Constructor)

defyuil 2023. 8. 30. 10:00

생성자(Constructor)


- 클래스를 사용하여 인스턴스를 생성할 때 호출되는 메서드 형태
-> NEW 키워드 뒤에 생성자 호출 코드가 기술됨
- 주로 인스턴스 변수를 초기화하는 용도 또는 인스턴스 생성 시 초기에 수행할 작업을 기술하는 용도


- 메서드 형태와 유사하나 차이점 두 가지 존재
1) 선언부에 리턴 타입이 없음 (리턴값이 없는 것이 아니라 리턴 타입 자체를 기술하지 않음)
2) 생성자 이름이 클래스 이름과 동일함


- 개발자가 클래스 정의 시 생성자를 하나도 정의하지 않으면 컴파일러에 의해 자동으로 기본(Default) 생성자가 생성됨
- 메서드와 유사한 형태이므로 파라미터가 있을 수도 있고, 없을 수도 있음

- 생성자를 별도로 호출할 수 없으며 반드시 NEW 키워드 뒤에만 지정할 수 있음

 

 


< 생성자 정의 기본 문법 >

 [접근제한자] 메서드명([매개변수선언...]){
     // 생성자 호출 시점(인스턴스 생성 시점)에 수행할 작업을 기술
     // -> 인스턴스 변수 초기화 등
 }


 

< 인스턴스 생성 기본 문법 >

클래스명 참조변수명 = new 생성자명([데이터...]);

 

 

 

 

 

클래스 정의 시 개발자가 별도의 생성자를 정의하지 않으면 자바 컴파일러에 의해 기본 생성자가 자동으로 생성됨
-> 기본 생성자는 접근제한자가 클래스와 같고, 리턴 타입이 없으며, 이름은 클래스 이름과 같다
또한, 매개변수가 없으며 중괄호 블록{} 내에 수행할 코드가 없다
public Person() {} // 기본 생성자(Default Constructor)

 

 

 

 

 

 

 

 

 

 



 

 

파라미터 생성자

- 생성자 호출 시점에서 전달해야 할 데이터가 있을 경우 생성자 파라미터(매개변수)를 선언할 수 있음(=메서드와 동일)
- 전달받은 데이터는 인스턴스 변수를 초기화하는 용도로 사용
- 즉, 객체마다 다른 데이터를 가진 채로 인스턴스를 생성하기 위해 사용

 

 


< 파라미터 생성자 정의 기본 문법 >

[접근제한자] 클래스명(매개변수선언...){
     // 생성자 호출 시점에 파라미터에 데이터를 전달하여
     // 인스턴스 내의 인스턴스 변수(멤버변수)를 초기화함
     인스턴스 변수명(멤버변수명) = 매개변수명(데이터)
 }

 

 

 

 

 

 

 

 



 

생성자 오버로딩

- 메서드 오버로딩과 동일
- 생성자 호출 시 다양한 형태의 파라미터를 전달하여 객체를 다양하게 초기화하는 목적