생성자(constructor)는 new 연산자로 클래스로부터 객체를 생성할 때 호출되어 객체의 초기화 역할을 합니다.
객체 초기화란 필드를 초기화하거나 메서드를 호출해서 객체를 사용할 준비를 하는 것을 말합니다.
생성자를 실행하지 않고는 클래스로부터 객체를 만들 수 없습니다.
new 연산자에 의해 성성자가 성공적으로 실행되면 힙(heap) 영역에 객체가 생성되고 객체의 주소가 반환됩니다.
반환된 객체의 주소는 클래스 변수에 저장됩니다.
모든 클래스는 생성자가 반드시 존재하며, 생성자를 하나 이상 가질 수 있습니다.
클래스 내부에 생성자 선언을 생략했다면 컴파일러는 중괄호 { } 블록 내용이 비어있는 기본 생성자를 자동을 생성합니다.
기본 생성자 외의 생성자를 선언하려면 생성자의 매개변수의 내용과 이에 따른 생성자 블록 내용을 변경해 주면 됩니다.
생성자는 메서드와 비슷한 모양을 가지고 있으나, 리턴 타입이 없고 이름이 클래스 이름과 동일합니다.
생성자 블록 내부에는 객체 초기화 코드가 작성되는데, 일반적으로 필드에 초기값을 저장하거나 메서드를 호출하여 객체 사용 전에 필요한 준비를 하게 됩니다.
필드가 여러 개더라도 매개변수는 생략할 수도 있고 여러 개를 선언할 수도 있습니다.
클래스로부터 객체가 생성될 때 필드는 기본 초기값으로 자동 설정됩니다.
만약 다른 값으로 초기화하고 싶다면 필드 선언 시 초기값을 설정해 주는 방법과 생성자에서 초기값을 설정해 주는 방법이 있습니다.
필드를 선언할 때 초기값을 주게 되면 동일한 클래스로부터 생성되는 객체들은 모두 같은 값을 갖게 됩니다. 하여 객체 생성 시점에서 외부에서 제공되는 다양한 값들로 초기화되어야 한다면 생성자에서 초기화를 해야 합니다.
Java는 메서드 오버로딩과 마찬가지로 외부에서 제공되는 다양한 데이터들을 사용하여 객체를 초기화하기 위해 다양한 방법으로 객체를 생성할 수 있도록 생성자 오버로딩을 제공합니다.
생성자 오버로딩 또한 메서드 오버로딩과 마찬가지로 매개변수를 달리하는 생성자를 여러 개 선언하는 것을 말합니다.
생성자 오버로딩이 많아질 경우 생성자 간의 중복된 코드가 발생할 수 있습니다.
매개변수의 수만 달리하고 필드 초기화 내용이 비슷한 생성자에서 이러한 현상을 볼 수 있는데, 이런 경우 필드 초기화 내용은 한 생성자에만 집중적으로 작성하고 나머지 생성자는 초기화 내용을 가지고 있는 생성자를 호출하는 방법으로 개선할 수 있습니다.
'프로그래밍 언어 > 자바 (Java)' 카테고리의 다른 글
[자바(Java) 공부하기] 18. 중첩 클래스 - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.18 |
---|---|
[자바(Java) 공부하기] 17. 지정 예약어 - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.17 |
[자바(Java) 공부하기] 16. 접근제한자 - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.16 |
[자바(Java) 공부하기] 15. 클래스 배열(객체 배열) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.15 |
[자바(Java) 공부하기] 13. 필드 - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.13 |
[자바(Java) 공부하기] 12. 클래스 - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.12 |
[자바(Java) 공부하기] 11. 메서드 - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.11 |
[자바(Java) 공부하기] 10. 배열 - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.10 |