인프런 커뮤니티 질문&답변

김찬호님의 프로필 이미지
김찬호

작성한 질문수

김영한의 실전 자바 - 기본편

super - 생성자

[super - 생성자] 기본생성자 생략 부분

해결된 질문

작성

·

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()를 삽입합니다.

감사합니다.

김찬호님의 프로필 이미지
김찬호

작성한 질문수

질문하기