강의

멘토링

로드맵

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

dhkdxo12님의 프로필 이미지
dhkdxo12

작성한 질문수

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

상속과 생성자 호출순서

기본 생성사 출력 관련

해결된 질문

작성

·

14

0

만약 Car()랑 ECar()를 출력하고 싶으면

ElectricCar tesla = new ElectricCar("Tesla", 2021, 75);

위 구문만 있으면 부모 및 자식의 기본 생성자는 출력하지 않아도 되는건가요?
ElectricCar tesla = new ElectricCar();
ElectricCar tesla = new ElectricCar("Tesla", 2021, 75); 이렇게 해야지 각 class의 기본 생성자를 호출 하는건가요?

 

무조건 기본 생성자를 호출하는 것이 아니라

ElectricCar tesla = new ElectricCar();이 있어야만 기본 생성자를 호출하는걸까요?

답변 2

0

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

new 뒤에 있는 것 자체가 어떤 생성자인지를 말하는 것입니다.

ElectricCar tesla = new ElectricCar("Tesla", 2021, 75); 이 구문에서 new 뒤만 보시면

ElectricCar("Tesla", 2021, 75); 이렇게 되어있죠?

 

이 문장 자체가, 파라미터 3개짜리 중에 맨 앞에는 문자열, 두번째와 세번째는 숫자로 되어있는 생성자를 호출해달라는 이야기고 거기에 파라미터를 "Tesla", 2021, 75 이렇게 넣어달라는 이야기입니다.

 

기본생성자는 파라미터가 없는 생성자를 의미하기 때문에 저거는 다른 것을 부른 것이죠.

가장 마지막 줄에 말씀하신 것처럼 ElectricCar tesla = new ElectricCar(); 하면 기본생성자를 부르는 것입니다.

0

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

자바에서 생성자 호출과 관련하여 질문해 주셨군요. 질문해 주신 내용을 조금 더 명확히 설명드리겠습니다.

  1. 기본 생성자 호출:

    • ElectricCar tesla = new ElectricCar();처럼 기본 생성자를 호출하면 부모 클래스와 자식 클래스 각각의 기본 생성자가 순차적으로 호출됩니다. 이는 기본 생성자가 있다고 가정할 때의 상황입니다.
    • 만약 부모 클래스에 기본 생성자가 없고, 자식 클래스에서 기본 생성자를 호출할 때 명시적으로 부모 생성자를 지정하지 않으면 컴파일 오류가 발생합니다.
  2. 매개변수가 있는 생성자 호출:

    • ElectricCar tesla = new ElectricCar("Tesla", 2021, 75);와 같은 구문은 매개변수가 있는 생성자를 호출하는 경우로, 이때 자식 생성자가 명시적으로 부모 클래스의 생성자를 호출하지 않으면 기본적으로 부모의 매개변수 없는 생성자가 호출됩니다. 하지만 부모 클래스에 매개변수가 있는 생성자만 존재할 경우, 자식에서 이를 명시적으로 호출해야 합니다.
  3. 명시적인 부모 생성자 호출:

    • 자식 클래스의 생성자에서 super();를 사용할 경우 부모의 기본 생성자가 호출됩니다.
    • 반대로 super(model, year);와 같이 매개변수가 있는 부모 생성자를 호출하는 경우, 해당 매개변수 생성자가 호출됩니다.

비슷한 주제에 대해 추가적인 이해를 돕기 위해 관련 질문과 답변 링크를 첨부해드립니다:

이 설명이 생성자 호출 순서와 관련된 이해에 도움이 되었길 바랍니다.

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

dhkdxo12님의 프로필 이미지
dhkdxo12

작성한 질문수

질문하기