본문 바로가기
Java

[Java] 자바에서 기본 생성자의 자동 생성 여부와 사용 조건

by clolee 2025. 4. 8.

✅ 자바에서 기본 생성자의 자동 생성 여부와 사용 조건


1️⃣ 생성자를 직접 하나도 정의하지 않은 경우


  
class Student {
String name;
int score;
}
  • 🔹 컴파일러가 자동으로 기본 생성자(public Student())를 만들어 줍니다.
  • 🔹 별도로 작성하지 않아도 아래처럼 사용 가능:

  
Student s = new Student(); // ✅ 문제 없이 사용 가능

📌 이 경우 기본 생성자는 내부적으로 super(); (Object 생성자)만 호출합니다.


2️⃣ 생성자를 하나라도 직접 정의한 경우


  
class Student {
public Student(String name) {
this.name = name;
}
}
  • 🔸 이 경우 컴파일러는 더 이상 기본 생성자를 자동으로 생성하지 않습니다.
  • 🔸 따라서 아래 코드는 컴파일 오류 발생:

  
Student s = new Student(); // ❌ 오류: 기본 생성자가 없음

✅ 해결 방법: 기본 생성자를 명시적으로 추가해야 함


  
public Student() {
// 기본 생성자 직접 정의
}

✅ 요약 표

상황 기본 생성자 자동 생성됨? 기본 생성자 사용 가능?
생성자 정의 없음 ✅ 예 ✅ 예
생성자 하나라도 정의함 ❌ 아니오 ❌ 직접 정의해야 사용 가능

🧠 한 줄 정리

자바는 클래스에 생성자를 하나도 정의하지 않았을 때만

자동으로 기본 생성자를 만들어 줍니다.

하나라도 생성자를 만들면, 기본 생성자도 직접 만들어야 사용할 수 있습니다.


 

이어서 :

2025.04.08 - [Java] - [Java] 자바 생성자 확장 설명 (생성자 체이닝, 생성자 오버로딩)

2025.04.08 - [Java] - [Java] 왜 `this()` 생성자 체이닝을 사용하는가?

 

 

댓글