해결된 질문
작성
·
50
답변 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()가 먼저 실행됩니다.
추가로 도움이 될 만한 유사한 질문에 대한 링크를 첨부합니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.