강의

멘토링

커뮤니티

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

dhkdxo12님의 프로필 이미지
dhkdxo12

작성한 질문수

(2025) 일주일만에 합격하는 정보처리기사 실기

상속과 생성자 호출순서

부모 기본 생성자 출력 관련

해결된 질문

작성

·

19

0

부모 기본 생성자 출력 관련하여 질문.

예를 들어, B 테슬라 = new B //자식 호출

위와 같이 메인 구문에서 있을 때

 

  1. 부모 기본 생성자 X, 자식 기본 생성자 O

  2. 부모 기본 생성자 O, 자식 기본 생성자 X

1번과 2번에 대한 출력이 어떻게 되는지 궁금합니다.

답변 2

0

주말코딩님의 프로필 이미지
주말코딩
지식공유자

질문이 모호합니다. new 위에 오는 것이 생성자인데 지금 생성자를 작성하다가 안하셨습니다.

B만 할 수 없으니 B()로 기본 생성자를 호출한다고 생각해보겠습니다.

 

이 경우 부모 기본생성자와 자식 기본생성자 모두 아무 것도 하지 않는 빈 메서드라고 가정하면

1번과 2번은 똑같습니다. 똑같이 아무 것도 출력하지 않습니다. 둘 다 있는 것으로 Java가 만들어주고요.

 

질문을 조금 바꾸면 아예 다른 답변으로 드릴 수 있습니다.

저 구문 상으로는 확실하게 답변 드리기가 어렵습니다.

dhkdxo12님의 프로필 이미지
dhkdxo12
질문자

자식 생성자가 출력하기 위해서는 부모 생성자가 먼저 출력하여야 한다는 것으로 알고 있습니다.

B 테슬라 = new B()//자식 기본 생성자 호출구문이 있을 시

부모 클래스 내에 부모 기본 생성자는 있고 자식 클래스 내에 자식 기본 생성자는 없는 상황에서는 어떤식으로 출력이 되나요

주말코딩님의 프로필 이미지
주말코딩
지식공유자

그 상황이 제가 위에 답변 드린 상황입니다. 둘 다 같습니다.

기본 생성자에 출력문이 있으면 출력이 됩니다.

 

말씀하신 것에 정확히 대답드렸는데 다시 질문하시면 계속 도돌이표입니다..

 

아예 예제 2개를 대략적으로라도 작성하시고, 기본생성자가 있는 부분은 출력문을 작성해서 주시면 답변이 좀 더 쉬울 듯 합니다.

 

출력문이 없는 기본생성자만 있다면 1이나 2나 똑같고, 출력문이 있으면 그 출력하시면 됩니다.

 

'없는'이라는 건 우리가 코드로 안 적었다는거지 실제로는 만들어줍니다. 그래서 둘 다 동작을 하죠.

 

만약에 출력문을 넣으셨다면 그 출력문도 출력 됩니다.

0

안녕하세요, 인프런 AI 인턴입니다. dhkdxo12님.

자바에서 상속 관계에서 객체를 생성할 때에는 부모 클래스의 생성자가 항상 먼저 호출됩니다. 이 질문은 부모와 자식 생성자의 호출 순서에 대한 개념을 이해하는 데 도움이 될 것입니다.

경우별 출력 설명:

  1. 부모 기본 생성자 X, 자식 기본 생성자 O

    • 만약 부모 클래스에 기본 생성자가 없고, 자식 클래스에만 존재한다면, 자식 클래스를 인스턴스화할 때 컴파일 오류가 발생할 것입니다. 부모 클래스는 명시적으로 다른 형태의 생성자를 사용해야 하며, 그렇지 않을 경우 자식 클래스에서는 부모 클래스의 생성자 중 하나를 명시적으로 호출해야 오류가 해결됩니다.
  2. 부모 기본 생성자 O, 자식 기본 생성자 X

    • 이 경우 부모 클래스의 기본 생성자가 호출됩니다. 자식 클래스에 생성자를 정의하지 않더라도 디폴트 생성자가 암묵적으로 제공되며, 자식 클래스에서 객체를 생성할 수 있습니다. 객체 생성 시 부모의 기본 생성자가 호출되고, 그 다음 자식의 추가적인 생성자 로직이 실행됩니다. 출력은 부모의 메시지만 출력될 것입니다.

이와 관련된 추가적인 설명과 예시를 아래의 링크를 통해 참고해보세요:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

dhkdxo12님의 프로필 이미지
dhkdxo12

작성한 질문수

질문하기