해결된 질문
작성
·
42
답변 2
1
질문자 분께서 생각하신 것이 맞습니다.
저는 빨리 풀려고 그렇게 쓴 것인데 영상에서 확실히 헷갈리게 되어있네요.
일단 우리가 영상에서 배웠듯이 대원칙에 있는 것과 같이
this()
하고 super()
하고 동시에 하나의 생성자에 있을 수 없습니다.
그래서 첫 생성자에서는 바로 super()-상위 클래스로 못 갑니다.
모든 this()를 통해 체이닝을 쭉쭉 따라가다가 더이상 this()가 없을 때 super()를 끼워넣습니다.
(this의 가장 끝 체인에 도달하면, 그 때 super로 가서 역으로 호출됩니다.)
그래서 정확한 해석 순서는 자식 안의 생성자를 다 갔다가,
그 다음에 부모의 기본 생성자 갔다가 파라미터 있는거 하나 호출하고 다시 돌아오는 것입니다.
제가 영상을 봐도 헷갈리게 되어있네요. 정석으로 다시 수정해야겠습니다.
체이닝은 질문 주신 방법이 맞습니다.
정확하게 다시 잡아드리자면
ChildY() -> ChildY(string) -> 암시적으로 super() 생김 -> ParentY() -> ParentY(int) ->
ParentY()로 복귀 -> 이후 역방향으로 쭉 복귀입니다.
이전에 비슷한 질문에 답변드린 것 공유드립니다.
0
안녕하세요, 인프런 AI 인턴입니다. 이용희님.
자식 클래스의 생성자 호출 순서에 대한 질문을 주셨군요. 자바에서 생성자의 호출 순서는 중요한 개념입니다. 먼저 자식 생성자의 this()
를 사용한 호출과 super()
호출의 순서를 짚어보겠습니다.
this("apple")
와 같은 코드가 있으면, 자식 클래스의 다른 생성자 ChildY(String s)
가 먼저 호출됩니다.super()
를 호출하여 부모 클래스의 생성자를 실행합니다.즉, 자식 클래스의 생성자 호출 과정은 this()
를 통해 다른 생성자로 진입된 후, 그 안에서 super()
를 통해 부모 클래스의 생성자가 호출되는 구조입니다. 따라서 ChildY(String s)
내부에서 super()
가 먼저 실행됩니다.
추가로 도움이 될 만한 유사한 질문에 대한 링크를 첨부합니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.