🧠 개념 설명
1️⃣ 생성자란?
생성자는 객체를 만들 때 자동으로 호출되는 특수한 메서드입니다.
클래스 이름과 같고, 리턴 타입이 없습니다.
2️⃣ this 키워드this
는 현재 객체 자신을 가리키는 참조입니다.
필드와 매개변수의 이름이 같을 때 구분하는 데 사용돼요.
3️⃣ 생성자 오버로딩
여러 개의 생성자를 정의해서 다양한 방식으로 객체를 초기화할 수 있습니다.
조건은 매개변수의 개수나 타입이 달라야 합니다.
💻 예제 1 – this 사용
public class User {
String name;
int age;
public User(String name, int age) {
this.name = name; // this로 필드 구분
this.age = age;
}
void info() {
System.out.println("이름: " + name + ", 나이: " + age);
}
}
public class ConstructorExample1 {
public static void main(String[] args) {
User u1 = new User("알파", 999);
u1.info();
}
}
🧠 매개변수와 필드 이름이 같을 때 this
를 사용해 구분해요.
💻 예제 2 – 생성자 오버로딩
public class Product {
String name;
int price;
// 기본 생성자
public Product() {
this("이름없음", 0);
}
// 매개변수 1개
public Product(String name) {
this(name, 0);
}
// 매개변수 2개
public Product(String name, int price) {
this.name = name;
this.price = price;
}
void printInfo() {
System.out.println("상품: " + name + ", 가격: " + price + "원");
}
}
public class ConstructorExample2 {
public static void main(String[] args) {
Product p1 = new Product();
Product p2 = new Product("노트북");
Product p3 = new Product("스마트폰", 1200000);
p1.printInfo();
p2.printInfo();
p3.printInfo();
}
}
🧩 생성자를 여러 개 정의해서 다양한 방식으로 객체를 초기화할 수 있어요!
⚠️ 주의할 점
- 생성자는 리턴 타입을 절대 쓰지 않음 (void도 안 됨!)
- this()는 생성자 안에서만 호출 가능하며 반드시 첫 줄에 작성
- 오버로딩 시, 매개변수의 개수나 타입이 달라야 함
🧠 정리 한 줄 요약
생성자는 객체의 초기화를 책임지는 문지기!
this와 오버로딩을 활용하면 더 유연하고 깔끔한 코드 작성이 가능해요!