Home > Archive > Java_archive > ☕️[Java] 기본 생성자

☕️[Java] 기본 생성자
Java Programming Language

기본 생성자

아래의 코드를 봐봅시다.
생각해보면 아래의 코드는 생성자를 만들지 않았는데, 생성자를 호출한 적이 있습니다.
확인해 봅시다.

public class MemberInit {
    String name;
    int age;
    int grade;
}
public class MethodInitMain1 {
    public static void main(String[] args) {
        MemberInit member1 = new MemberInit();
        ...
    }
}

여기서 new MemberInit() 이 부분은 분명히 매개변수가 없는 다음과 같은 생성자가 필요할 것입니다.

public class MemberInit {
    String name;
    int age;
    int grade;
    
    MemberInit() { // 생성자 필요
    }
}

기본 생성자

  • 매개변수가 없는 생성자를 기본 생성자라 합니다.
  • 클래스에 생성자가 하나도 없으면 자바 컴파일러는 매개변수가 없고, 작동하는 코드가 없는 기본 생성자를 자동으로 만들어줍니다.
  • 생성자가 하나라도 있으면 자바는 기본 생성자를 만들지 않습니다.

MemberInt 클래스의 경우 생성자를 만들지 않았으므로 자바가 자동으로 기본 생성자를 만들어준 것입니다.

예제를 통해 기본 생성자를 확인해봅시다.

MemberDefault

package construct;

public class MemberDefault {
  String name;

  public MemberDefault() {
    System.out.println("생성자 호출");
  }
}

참고: 자바가 자동으로 생성해주는 기본 생성자는 클래스와 같은 접근 제어자를 같습니다.

물론 다음과 같이 기본 생성자를 직접 정의해도 됩니다.

package construct;

public class MemberDefault {
  String name;

  MemberDefault() {
    System.out.println("생성자 호출");
  }
}

실행 경과

생성자 호출

기본 생성자를 왜 자동으로 만들어줄까?

  • 만약 가바에서 기본 생성자를 만들어주지 않는다면 생성자 기능이 필요하지 않은 경우에도 모든 클래스에 개발자가 직접 기본 생성자를 정의해야 합니다.
    • 생성자 기능을 사용하지 않는 경우도 많기 때문에 이런 편의 기능을 제공합니다.

정리

  • 생성자는 반드시 호출되어야 합니다.
  • 생성자가 없으면 기본 생성자가 제공됩니다.
  • 생성자가 하나라도 있으면 기본 생성자가 제공되지 않습니다. 이 경우 개발자가 정의한 생성자를 직접 호출해야합니다.