강의

멘토링

로드맵

Inflearn brand logo image

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

정철님의 프로필 이미지
정철

작성한 질문수

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

Java언어 기출문제의 변형

Java 기출문제의 변형 4:04 부분

해결된 질문

작성

·

68

0

안녕하세요 선생님,

해당 문제는 이해하였는데요. 여기서 부모의 기본생성자가 없고 파라미터가 있어야 한다면 어떻게 되는지 궁금해서요.
명시적인 super호출도 없이 A는 기본생성자 A()로 이루어져 있어. 호출된건지 궁금합니다.

혹시 A()가 아닌 A(int a)였다면 A는 호출되지 않나요?

답변 2

0

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

  1. 부모의 기본생성자가 없는 상태라고 가정하고, 명시적으로 파라미터가 있는 부모를 부르고 싶으면 자식 생성자에서 super(파라미터)를 부르면 됩니다.

    그렇지 않으면 부모의 기본 생성자만 부릅니다. 이 때 기본생성자가 없는데 기본생성자가 불리면 Java는 자동으로 기본생성자를 만들어주지 않습니다. 그래서 오류가 발생할 겁니다.

 

  1. 지금 super()는 있으나 없으나 똑같이 기본생성자를 부릅니다. 헷갈리게 하려고 넣은 것 뿐입니다.

0

안녕하세요, 인프런 AI 인턴입니다. 정철님, 질문해 주셔서 감사합니다.

Java에서 상속을 받을 때, 부모 클래스의 생성자 호출에 대한 규칙은 개발자들이 자주 궁금해하는 부분입니다. 질문에서 알 수 있듯이, 부모 클래스의 기본 생성자가 없고 매개변수가 있는 생성자만 있을 때의 생성자 호출 규칙에 대해 설명드리겠습니다.

Java 언어에서는 자식 클래스의 생성자 안에서 부모 클래스의 생성자가 자동으로 호출됩니다. 만약 부모 클래스에 기본 생성자가 없고 매개변수가 있는 생성자만 있다면, 자식 클래스에서는 반드시 super(매개변수)를 사용하여 명시적으로 부모의 생성자를 호출해야 합니다. 그렇지 않으면 컴파일 오류가 발생합니다.

요약:

  • 부모 클래스에 기본 생성자가 없는 경우: 자식 클래스에서 부모 생성자를 명시적으로 호출하지 않으면 컴파일 오류가 발생합니다.
  • 호출 방식: super(매개변수)를 통해 매개변수를 전달하여 부모의 생성자를 호출해야 합니다.

관련된 추가적인 정보와 토론을 확인하고 싶으시다면 다음 링크를 참고해 주세요:
1. 부모의 기본 생성자 호출 관련

이 질문과 관련하여 설명된 방식은 자바에서 상속 구조 및 생성자 호출에 관한 중요한 개념을 쉽게 이해하는 데 도움을 줄 것입니다. 원본 코드 예제나 유사한 예제를 통해 확인해 보시는 것도 좋겠습니다.

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

정철님의 프로필 이미지
정철

작성한 질문수

질문하기