✅ 자바에서 기본 생성자의 자동 생성 여부와 사용 조건
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()` 생성자 체이닝을 사용하는가?
'Java' 카테고리의 다른 글
[Java] 왜 `this()` 생성자 체이닝을 사용하는가? (0) | 2025.04.08 |
---|---|
[Java] 자바 생성자 확장 설명 (생성자 체이닝, 생성자 오버로딩) (0) | 2025.04.08 |
[Java] Java의 키워드들과 JVM 메모리 영역의 관계 정리 (0) | 2025.04.08 |
[Java] Java 키워드 조합 의미 (0) | 2025.04.08 |
[Java] Java 키워드 정리 (0) | 2025.04.08 |
댓글