JAVA/객체지향 프로그래밍 (OOP) 기초

생성자의 개념 및 오버로딩

DEVLIB 2025. 4. 12. 08:56
728x90

생성자란?

클래스 이름과 동일하며, 객체를 생성할 때 실행되는 메서드
객체의 필드를 초기화하거나 초기 설정을 도와줍니다.


생성자의 기본 특징

항목 설명
이름 클래스 이름과 같아야 함
반환 타입 없음 (void도 쓰지 않음)
자동 호출 new 클래스명() 시 실행됨

기본 생성자(Default Constructor)

public class Person {
    String name;
    
    public Person() {
        System.out.println("기본 생성자 실행됨!");
    }
}

매개변수 생성자(Parameter Constructor)

public class Person {
    String name;

    public Person(String inputName) {
        name = inputName;
    }
}
Person p = new Person("영희");

생성자 오버로딩이란?

같은 이름의 생성자를 매개변수만 다르게 여러 개 정의하는 것

오버로딩 조건

  • 생성자 이름은 같고
  • 매개변수의 개수 또는 타입이 달라야

생성자 오버로딩 예제

public class Student {
    String name;
    int age;

    // 생성자 1: 기본
    public Student() {
        this.name = "이름없음";
        this.age = 0;
    }

    // 생성자 2: 이름만 받음
    public Student(String name) {
        this.name = name;
        this.age = 0;
    }

    // 생성자 3: 이름 + 나이 받음
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    void printInfo() {
        System.out.println("이름: " + name + ", 나이: " + age);
    }
}
Student s1 = new Student();
Student s2 = new Student("철수");
Student s3 = new Student("영희", 20);

 

출력:

이름: 이름없음, 나이: 0  
이름: 철수, 나이: 0  
이름: 영희, 나이: 20

this()로 생성자 간 호출

public Student(String name) {
    this(name, 0);  // 생성자 호출
}
  • this()는 생성자 내부에서 다른 생성자 호출
  • 반드시 첫 줄에 위치해야 함

생성자 vs 일반 메서드 차이

항목 생성자 메서드
이름 클래스명과 같음 자유롭게 지정 가능
반환 타입 없음 void, int, String 등
호출 시점 객체 생성 시 자동 호출 직접 호출
목적 필드 초기화, 객체 설정 기능 실행

실습 아이디어

  • Book 클래스 → 생성자 오버로딩: 제목만, 제목+가격, 기본값
  • Car 클래스 → this()로 생성자 체인 구성

마무리 요약


개념 설명
생성자 객체 생성 시 자동 실행되는 특별한 메서드
기본 생성자 매개변수 없음
오버로딩 개변수 개수/타입 다르게 여러 개 정의
this() 생성자 내부에서 다른 생성자 호출
LIST