✅ 자바 11강 – 생성자와 this, 오버로딩

🧠 개념 설명

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와 오버로딩을 활용하면 더 유연하고 깔끔한 코드 작성이 가능해요!

👉 다음 강의 보기 – 자바 12강: switch 문과 enum