공부 기록/Java with ChatGPT

[Java/ChatGPT] Day 7: 생성자 오버로딩 (Constructor Overloading)

dev.jelee 2025. 6. 16. 00:49

[ 학습목표 ]

  1. 생성자 오버로딩의 개념 이해
  2. 다양한 매개변수를 받는 생성자의 정의 및 활용
  3. 생성자 오버로딩을 통해 유연한 객체 생성 능력 기르기

[ 이론 ]

1. 생성자란?

  • 객체가 생성될 때 자동으로 호출되는 메서드
  • 클래스 이름과 같고 return 타입이 없음

 

2. 생성자 오버로딩이란?

  • 하나의 클래스에 매개변수가 다른 여러 생성자를 정의하는 것

 

3. 생성자 오버로딩 규칙

  • 매개변수의 개수 또는 타입이 달라야 함
  • Java는 인자에 따라 적절한 생성자 자동 호출

 

4. 생성자 오버로딩 예시

public class Book {
  String title;
  String author;

  // 생성자 1
  Book() {
    this.title = "제목 없음";
    this.author = "저자 없음";
  }

  // 생성자 2
  Book(String title) {
    this.title = title;
    this.author = "저자 없음";
  }

  // 생성자 3
  Book(String title, String author) {
    this.title = title;
    this.author = author;
  }

  void printInfo() {
    System.out.println("제목: " + title + ", 저자: " + author);
  }
}

 

5. 추가 팁

  • this()를 사용하면 다른 생성자를 호출할 수 있음 -> 코드 중복 줄이기 가능

[ 실습 ]

✅ 실습 1: 다양한 방식으로 Book 객체 생성하기

public class Main {
  public static void main(String[] args) {
    Book b1 = new Book();
    Book b2 = new Book("해리포터");
    Book b3 = new Book("1984", "조지 오웰");

    b1.printInfo(); // 제목 없음, 저자 없음
    b2.printInfo(); // 해리포터, 저자 없음
    b3.printInfo(); // 1984, 조지 오웰
  }
}

[ 메모 ]

  • this()를 사용시 다른 생성자를 호출할 수 있는 부분을 새로 알게 되었다.