• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

super-생성자

24.02.02 10:43 작성 조회수 164

1

 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.


1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
여기에 질문 내용을 남겨주세요.

상속을 했을 때, 메소드의 경우에는 호출하는 클래스에 따라서 (만약 자식클래스로 호출했을 때에는) 자식 인스턴스에 가서 확인한 후, 없으면 부모로 올라가서 호출을 하는데,

첫번 째 질문 : 생성자의 경우에는 부모 먼저 호출이 되는지 이해가 잘 안갑니다.

그리고 만약 new ClassC()를 호출을 했을 때, new CLassC()의 인스턴스가 생성이 되는데, '

두번째 질문 : 이때 ClassC에는 ClassB를 상속하고 있어서 ClassB도 인스턴스가 생성이 되어야 되어야 한다 라고 이해하면 될는건가요>

답변 1

답변을 작성해보세요.

1

안녕하세요. 서연님

첫 번째 질문

super()를 호출하는 것 자체가 부모에 있는 생성자를 직접 호출하는 것으로 이해하시면 됩니다. 자식의 생성자를 호출하면 자식은 반드시 부모의 super()를 호출해야 합니다. 이때 부모의 생성자가 호출됩니다.

두 번째 질문

실제로는 인스턴스는 한번에 같이 생성됩니다. 다만 생성자를 통해 초기화 되는 순서가 부모부터 자식으로 내려온다고 이해하시면 됩니다. 부모 클래스의 생성자 호출은 자식 클래스가 부모 클래스의 모든 속성과 메소드를 올바르게 상속받고, 사용할 준비가 되도록 보장하기 위함입니다.

감사합니다.