인프런 커뮤니티 질문&답변
부모 기본 생성자 출력 관련
해결된 질문
작성
·
19
답변 2
0
질문이 모호합니다. new 위에 오는 것이 생성자인데 지금 생성자를 작성하다가 안하셨습니다.
B만 할 수 없으니 B()로 기본 생성자를 호출한다고 생각해보겠습니다.
이 경우 부모 기본생성자와 자식 기본생성자 모두 아무 것도 하지 않는 빈 메서드라고 가정하면
1번과 2번은 똑같습니다. 똑같이 아무 것도 출력하지 않습니다. 둘 다 있는 것으로 Java가 만들어주고요.
질문을 조금 바꾸면 아예 다른 답변으로 드릴 수 있습니다.
저 구문 상으로는 확실하게 답변 드리기가 어렵습니다.
그 상황이 제가 위에 답변 드린 상황입니다. 둘 다 같습니다.
기본 생성자에 출력문이 있으면 출력이 됩니다.
말씀하신 것에 정확히 대답드렸는데 다시 질문하시면 계속 도돌이표입니다..
아예 예제 2개를 대략적으로라도 작성하시고, 기본생성자가 있는 부분은 출력문을 작성해서 주시면 답변이 좀 더 쉬울 듯 합니다.
출력문이 없는 기본생성자만 있다면 1이나 2나 똑같고, 출력문이 있으면 그 출력하시면 됩니다.
'없는'이라는 건 우리가 코드로 안 적었다는거지 실제로는 만들어줍니다. 그래서 둘 다 동작을 하죠.
만약에 출력문을 넣으셨다면 그 출력문도 출력 됩니다.
0
안녕하세요, 인프런 AI 인턴입니다. dhkdxo12님.
자바에서 상속 관계에서 객체를 생성할 때에는 부모 클래스의 생성자가 항상 먼저 호출됩니다. 이 질문은 부모와 자식 생성자의 호출 순서에 대한 개념을 이해하는 데 도움이 될 것입니다.
경우별 출력 설명:
부모 기본 생성자 X, 자식 기본 생성자 O
- 만약 부모 클래스에 기본 생성자가 없고, 자식 클래스에만 존재한다면, 자식 클래스를 인스턴스화할 때 컴파일 오류가 발생할 것입니다. 부모 클래스는 명시적으로 다른 형태의 생성자를 사용해야 하며, 그렇지 않을 경우 자식 클래스에서는 부모 클래스의 생성자 중 하나를 명시적으로 호출해야 오류가 해결됩니다.
- 만약 부모 클래스에 기본 생성자가 없고, 자식 클래스에만 존재한다면, 자식 클래스를 인스턴스화할 때 컴파일 오류가 발생할 것입니다. 부모 클래스는 명시적으로 다른 형태의 생성자를 사용해야 하며, 그렇지 않을 경우 자식 클래스에서는 부모 클래스의 생성자 중 하나를 명시적으로 호출해야 오류가 해결됩니다.
부모 기본 생성자 O, 자식 기본 생성자 X
- 이 경우 부모 클래스의 기본 생성자가 호출됩니다. 자식 클래스에 생성자를 정의하지 않더라도 디폴트 생성자가 암묵적으로 제공되며, 자식 클래스에서 객체를 생성할 수 있습니다. 객체 생성 시 부모의 기본 생성자가 호출되고, 그 다음 자식의 추가적인 생성자 로직이 실행됩니다. 출력은 부모의 메시지만 출력될 것입니다.
- 이 경우 부모 클래스의 기본 생성자가 호출됩니다. 자식 클래스에 생성자를 정의하지 않더라도 디폴트 생성자가 암묵적으로 제공되며, 자식 클래스에서 객체를 생성할 수 있습니다. 객체 생성 시 부모의 기본 생성자가 호출되고, 그 다음 자식의 추가적인 생성자 로직이 실행됩니다. 출력은 부모의 메시지만 출력될 것입니다.
이와 관련된 추가적인 설명과 예시를 아래의 링크를 통해 참고해보세요:
- 생성자 호출 방법에 대한 질문: 부모와 자식 클래스의 생성자 호출 순서에 대한 실질적인 예시와 설명이 포함되어 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.






자식 생성자가 출력하기 위해서는 부모 생성자가 먼저 출력하여야 한다는 것으로 알고 있습니다.
B 테슬라 = new B()//자식 기본 생성자 호출구문이 있을 시
부모 클래스 내에 부모 기본 생성자는 있고 자식 클래스 내에 자식 기본 생성자는 없는 상황에서는 어떤식으로 출력이 되나요