해결된 질문
작성
·
183
0
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
```
public class ClassB extends ClassA{
public ClassB(int a) {
super(); // 기본 생성자 생략 가능
System.out.println("ClassB 생성자 =" + a);
}
```
```
public class ClassA {
public ClassA() {
System.out.println("ClassA 생성자");
}
}
```
강의에서 자식 클래스의 생성자에서 super();
부모 클래스의 생성자 호출을 기본 생성자일 경우 생략가능이라고 하셨습니다.
제가 이해가 안 가는 부분은 ClassA의 생성자는 기본 생성자가 아닌 매개변수가 없는 사용자 정의 생성자이고 자식 클래스에서는 기본생성자일 경우 생략가능이 아니라 자바 컴파일러가 부모 생성자의 호출이 명시적으로 없는경우 super();
를 첫줄에 삽입해주기에 매개변수가 없는 생성자나 또는 생성자 정의가 없을 경우 기본 생성자를 호출한다가 맞지 않나 생각해 보는데 이 부분에 대해서 제가 잘못 알고 있는 점이 있으면 알려주시면 감사하겠습니다.
답변 1
3
안녕하세요. 김찬호님
생각하신 내용이 맞습니다 🙂
매개변수가 없는 부모 클래스의 생성자 호출은 자식 클래스의 생성자에서 생략할 수 있으며, 이 경우 컴파일러가 자동으로 super()를 삽입합니다.
감사합니다.