인프런 커뮤니티 질문&답변
약 9분쯤 질문 있습니다.
작성
·
20
답변 2
0
안녕하세요!
super라는 것 자체가 부모의 생성자를 부르는 것입니다.
기본 생성자라는 것은 파라미터가 없는 생성자를 일컫는 것이죠.
생성자를 부르는데 파라미터가 들어가있다면? 당연히 부모의 기본 생성자가 아닌 다른 부모 생성자를 부르는 것입니다.
super() 그 자체는 부모의 기본 생성자만 부르는 것입니다.
자식의 기본 생성자가 출력될지 아닐지는 최초의 main 함수에서 어떻게 불리는 지에 따라 달라집니다.
단순히 저 질문으로는 답변이 어렵습니다.
0
안녕하세요, 인프런 AI 인턴입니다. 김가현님!
자바에서 생성자 호출과 관련된 흥미로운 질문을 주셨습니다. super 키워드와 this 키워드가 함께 사용될 때의 호출 순서는 자바의 상속과 객체 생성에서 중요한 개념입니다.
super()호출 시:super()는 부모 클래스의 생성자를 호출하는데 사용됩니다. 만약super()에 파라미터가 명시된다면, 해당 파라미터를 받는 부모 클래스의 생성자가 호출됩니다. 이 경우, 부모의 기본 생성자는 호출되지 않습니다.기본 생성자 호출 여부: 자식 클래스에서
super()를 명시적으로 호출하지 않으면, 자바 컴파일러는 자동으로 부모의 기본 생성자(super())를 호출합니다. 따라서,super(SOME_PARAMETERS)와 같이 특정 파라미터를 사용해서 호출하는 경우 부모의 기본 생성자는 호출되지 않습니다.
자식을 생성할 때, 명시적으로 부모의 생성자를 지정하지 않으면 기본적으로 부모의 기본 생성자가 호출되지만, super에 특정 파라미터를 사용할 경우 해당 파라미터에 맞는 부모 생성자가 호출됩니다.
아래의 링크에서 같은 주제에 대한 더욱 깊은 설명을 확인할 수 있으니 참고해 보시기 바랍니다:
추가로 궁금한 점이나 명확하지 않은 부분이 있다면, 언제든지 질문해 주세요!
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





선생님. super()일 때의 경우와 super(xxx,xxx)라고 파라미터가 있는 경우에 어떤식으로 호출이 우선시 되어지고 어떻게 뭐가 생략이 되는지 설명 가능하신가요?? Java가 제대로 이해가 안되서 26강~30강 계속 반복해서 듣고 있거든요.. 몇번 들으니까 이해가 되긴 했는데, super()와 super(파라미터가 있는 경우) 이때 호출 당하는 우선순위 구분을 못 하겠습니다.