- Published on
항해99 플러스 백엔드 코스 6기 언어 사전 스터디 3주차 (2) - 생성자(Constructor) 와 this
- Authors
- Name
- Kil Hyeon Jun
항해99 플러스 백엔드 코스 6기 언어 사전 스터디 3주차 - 생성자(Constructor)와 this
1. 생성자 (Constructor)
생성자란?
- 객체를 생성할 때 호출되는 특수한 메소드
- 객체의 초기화를 담당하며, 객체 생성 시 필요한 작업을 수행
생성자의 특징
- 클래스 이름과 동일한 이름을 가짐
- 반환 타입이 없음
- 객체 생성 시 자동으로 호출됨
- 여러 개의 생성자를 정의할 수 있음 (오버로딩)
기본 생성자 (Default Constructor)
- 매개변수가 없는 생성자
- 클래스에 생성자가 정의되어 있지 않을 때, 컴파일러가 자동으로 생성
필드 초기화
- 생성자를 통해 객체의 필드를 초기화할 수 있음
- 생성자를 통해 객체 생성 시 필요한 초기화 작업을 수행
생성자 오버로딩 (Constructor Overloading)
- 여러 개의 생성자를 정의하여 다양한 초기화 방법을 제공
- 매개변수의 타입, 개수, 순서에 따라 호출될 생성자가 결정
public class Person {
String name;
int age;
// 기본 생성자
public Person() {
this.name = "Unknown";
this.age = 0;
}
// 이름만 초기화하는 생성자
public Person(String name) {
this.name = name;
this.age = 0;
}
// 이름과 나이를 초기화하는 생성자
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
2. this와 this()
this 키워드
- 객체 자신을 가리키는 키워드
- 인스턴스 변수와 지역 변수의 이름이 같을 때, 인스턴스 변수를 구분하기 위해 사용
public class Person {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
Person returnInstance() {
return this;
}
}
this() 메소드
- 다른 생성자를 호출할 때 사용하는 특수한 메소드
- 생성자 오버로딩 시 중복 코드를 줄이기 위해 사용
public class Person {
String name;
int age;
public Person() {
this("Unknown", 0);
}
public Person(String name) {
this(name, 0);
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
WARNING
생성자에서 다른 생성자를 호출할 때(this() 메소드)는 반드시 첫 줄에 위치해야 함
그렇지 않으면 컴파일 에러가 발생
3. 정리
- 생성자는 객체를 초기화하는 특수한 메소드
- 생성자는 클래스 이름과 동일한 이름을 가지며, 반환 타입이 없음
- 생성자를 통해 객체 생성 시 필요한 초기화 작업을 수행
- 생성자 오버로딩을 통해 다양한 초기화 방법을 제공
- this 키워드를 통해 객체 자신을 가리키며, this() 메소드를 통해 다른 생성자를 호출할 수 있음
- this() 메소드는 반드시 첫 줄에 위치해야 함