Constructors

생성자

생성자란 객체를 생성할 때 초기화를 담당하는 메서드이다. 생성자는 클래스 이름과 같아야 하며, 반환 타입이 없다.

  • 추가로 생성자를 선언하지 않아도 기본 생성자는 자동으로 생성된다. 단, 생성자가 하나라도 있으면 기본 생성자는 자동으로 생성되지 않는다.

생성자 필요성

  • 객체 생성 시 초기화 작업이 필요한 경우

  • 객체 생성 시 매개변수를 받아서 초기화 작업이 필요한 경우

  • 객체 생성 시 여러 객체가 공통적으로 사용하는 초기화 작업이 필요한 경우

생성자의 필요성2 (제약을 걸 수 있다.)

  • 생성자를 사용하면 필수값 입력을 보장할 수 있다.

    • 생성자를 직접 정의하면 기본 생성자는 자동으로 생성되지 않는다는 특성을 이용하는 방법이다.

좋은 프로그램은 무한한 자유도가 주어지는 것이 아니라, 제약을 걸어서 오류를 방지하는 것이 중요하다.

생성자 오버로딩과 this()

생성자 오버로딩

  • 매개변수 구성이 다른 여러 개의 생성자를 제공 가능.

  • 단, 아래의 코드의 경우는 굳이 this를 사용하지 않아도 된다.

intellij IDE 에서는 this 를 사용하지 않아도 색을 통해 쉽게 구분할 수 있어, 꼭 필요한 경우 아니면 굳이 사용할 필욘 없다고 생각한다.

public class MemberConstruct {
    String name;
    int age;
    int grade;

    MemberConstruct(String name, int age) {
        this.name = name;
        this.age = age;
        this.grade = 50;
    }

    MemberConstruct(String name, int age, int grade) {
        this.name = name;
        this.age = age;
        this.grade = grade;
    }
}

this()를 사용한 중복 제거

  • this()를 사용하면 하나의 생성자에서 다른 생성자를 호출 가능.

public class MemberConstruct {
    String name;
    int age;
    int grade;

    MemberConstruct(String name, int age) {
        this(name, age, 50);  // this() 사용하여 다른 생성자 호출
    }

    MemberConstruct(String name, int age, int grade) {
        this.name = name;
        this.age = age;
        this.grade = grade;
    }
}

this() 규칙

  • this()반드시 생성자 코드의 첫 줄에 위치해야 함.

public MemberConstruct(String name, int age) {
    System.out.println("생성자 시작");  // ⚠️ this() 앞에 코드가 있으면 오류 발생
    this(name, age, 50);

this 사용 TIP

  • 인틀리제이의 경우 this 를 사용하지 않아도 색을 통해 쉽게 구분할 수 있어, 꼭 필요한 경우 아니면 굳이 사용할 필욘 없다고 생각한다.

Last updated