강의

멘토링

로드맵

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

dhkdxo12님의 프로필 이미지
dhkdxo12

작성한 질문수

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

생성자와 메서드

자바 상속(부모, 자식)

해결된 질문

작성

·

16

0

생성자와 메서드 8:49

 

상속 관련하여 알려주고 있는데 해당 코드 관련해서 자식이 태어나려면 부모꺼를 먼저 호출하라고 들었습니다.

 

호출 답 관련해서 상세하게 설명요청드립니다.

어떤 것은 부모 호출을 먼저한 뒤 자식을 호출하고

어떤 것은 부모 호출 없이 자식만 호출하는 것 차이를 모르겠습니다.

답변 2

0

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

안녕하세요, 질문하신 부분의 new ElectricCar() 부분부터 순서대로 설명드리겠습니다.

우선 생성자에서 생각하실 것은 Java에서 그 어떤 객체가 태어날 때라도 부모의 클래스가 한 번 초기화 되어야 합니다.

 

이게 무슨 말이냐면, 부모의 생성자가 아예 없어도 "생략됐구나" 생각하시고 기본 생성자가 호출됐다고 생각하시면 됩니다.

 

지금 코드에서는 자식 클래스인 전기차의 생성자로 변수를 만들었습니다.

그 변수가 객체인 myElectricCar죠.

 

여기서 순서는 이렇습니다.

ElectricCar() 생성자 진입
  → Java가 자동으로 super() 삽입 → Car() 생성자 호출
    → "Car created" 출력
  → 그 다음 ElectricCar 본문 실행
    → "Electric Car created" 출력

생성자는 부모가 먼저 태어나야하기 때문에 지금 기준으로는 Car() 안에 있는 내용을 읽으시면 됩니다.

자식생성자 첫 줄에 우리가 보이지 않은 super()가 생략되어 있다고 보면 됩니다. Java 컴파일러가 자동으로 넣어줍니다.

 

"자식만 호출됨" <- 이 경우는 없습니다.

만약에 그렇게 보인다면, 부모에 기본 생성자가 없어보여서 그렇고

그것은 부모 기본 생성자를 실행은 했는데, 내용이 없으니까 출력값이 없어서 그렇게 보이는 것입니다.

 

혹시나 이와 관련하여 헷갈리는 예제가 있으면 아래 대댓글로 다시 질문 부탁드립니다.

0

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

자바에서 상속과 생성자 호출과 관련된 혼란을 해소하는 데 도움을 드리겠습니다. 객체지향 프로그래밍에서는 부모 클래스와 자식 클래스의 생성자 호출 순서를 이해하는 것이 매우 중요합니다.

생성자 호출 순서

  1. 자식 객체 생성 시:

    • 자식 클래스의 객체를 생성할 때, 자바는 부모 클래스의 생성자를 먼저 호출합니다. 이 과정은 부모 클래스에 정의된 속성과 메서드가 적절히 초기화된 후에, 자식 클래스의 고유한 속성과 메서드가 초기화되기 때문입니다. 따라서 자식 객체가 생성될 때는 기본적으로 super()가 호출되어 부모 클래스를 먼저 초기화하는 셈입니다.
  2. 명시적 호출과 암묵적 호출:

    • 만약 자식 클래스의 생성자에 super()가 명시적으로 존재하지 않더라도, 자바는 자동으로 부모의 기본 생성자를 호출합니다. 이는 자식 클래스가 부모 클래스의 특성을 상속받는 데 필수적인 과정입니다.
  3. 호출 순서의 예외:

    • 부모의 생성자 호출 없이 자식의 생성자를 직접 호출하는 경우는 없습니다. 이는 자바 언어의 특성상 불가능하며, 자식 객체가 생성될 때 항상 부모의 초기화가 선행되어야 합니다.

관련 자료

만약 위 설명이 흥미롭거나 더 알고 싶으신 부분이 있다면, 강의 내의 다른 질문도 한 번 살펴보시면 이해에 도움이 될 것입니다.

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

dhkdxo12님의 프로필 이미지
dhkdxo12

작성한 질문수

질문하기