생성자의 개념과 목적

- 생성자(constructor)는 객체가 생성될 때 객체의 초기화를 위해 실행되는 메소드이다.
생성자의 특징
- 생성자의 이름은 클래스와 동일하다.
- 생성자는 여러 개 작성(오버로딩)할 수 있다.
- 매개변수 개수와 타입만 다르면 여러 개 가능
- 생성자는 new를 통해 객체를 생성할 때 한번만 호출된다.
- 객체 생성은 반드시 new를 통해서만 이루어지며, 생성자는 이 순간 자동으로 한번만 호출된다.
- 생성자에 리턴 타입을 지정할 수 없다.
- 생성자는 어떤 값도 리턴하지 않기 때문
- 생성자의 목적은 객체가 생성될 때, 필요한 초기 작업을 위함이다.
- 객체 초기화를 하여 필요한 초기 준비를 하는 데에 이용
- 필드 초기화, 필요한 메모리 확보, 파일 열기, 네트워크 연결 등 객체가 활동하기 전에 필요한 초기 준비
기본 생성자(default constructor)
매개변수와 실행 코드가 없어 아무 일도 하지 않고 단순 리턴하는 생성자
디폴트 생성자라고 불림
1. 기본 생성자가 자동으로 생성되는 경우
- new로 객체 생성할 때 클래스에 생성자가 없으면 자바 컴파일러가 기본 생성자를 삽입하여 호출되도록 한다.
- 이때 소스 파일이 변하지는 않고 컴파일러에 의해 자동 삽입된 기본 생성자는 사용자의 눈에 보이지 않게 삽입된다.
2. 기본 생성자가 자동으로 생성되지 않는 경우
- 생성자가 하나라도 존재하는 클래스에는 컴파일러가 기본 생성자를 삽입해주지 않는다.
- 즉, public Circle(int r)이 있는 클래스에서 new Circle();로 생성을 하면 기본 생성자가 자동 삽입되지 않고 컴파일 에러가 발생한다.
this 레퍼런스
- this는 현재 객체 자신에 대한 레퍼런스이다.
- 구체적으로는 현재 실행되고 있는 메소드가 속한 객체에 대한 레퍼런스이다.
- 컴파일러에 의해 자동 관리된다.
- public Circle(int radius){ this.radius = radius; } 이런 식일 때 필요하다.
- 메소드가 객체 자신의 레퍼런스를 리턴해야 할 경우 다음과 같이 this를 리턴하면 된다.
public Circle getMe(){return this;}
this()로 다른 생성자 호출
this()는 클래스 내에서 생성자가 다른 생성자를 호출할 때 사용하는 자바 코드이다.
public class Book{
...
public Book(String title){
this(title, "작자미상");
}
public Book(String title, String author){
this.title = title;
this.author = aurhor;
}
...
}
this() 사용 시 주의할 점
- this()는 반드시 생성자 코드에서만 호출할 수 있다.
- this()는 반드시 같은 클래스 내 다른 생성자를 호출할 때 사용한다.
- this()는 반드시 생성자의 첫 번째 문장이 되어야 한다.
'Java' 카테고리의 다른 글
| [Java] 자바에서 키 입력 System.in과 Scanner (0) | 2024.05.03 |
|---|---|
| [Java] 자바 기본 문법 - 데이터 타입 (0) | 2024.05.03 |
| [Java] 컴파일 오류, 런타임 오류, 예외(exception) 차이 및 자바의 예외처리 클래스와 try-catch-finally (0) | 2024.04.08 |
| [Java] main() 메소드의 특징과 매개변수 (1) | 2024.04.08 |
| [Java] Java에서 레퍼런스 타입과 배열의 활용: C++ 포인터와의 비교 (0) | 2024.04.08 |