인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

주무세요님의 프로필 이미지

작성한 질문수

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

Java언어 기출문제의 변형

업캐스팅 관련 질문

해결된 질문

작성

·

18

0

자바에서 업캐스팅 형태로 클래스가 구성되었을 경우, 부모 클래스에 존재하지 않는 메서드를 자식 클래스에서 정의할 수 없다고 배웠습니다.

 

그러나, 생성자는 메서드와는 다르게 부모와 파라미터까지 동일한 생성자가 존재하지 않아도 괜찮은건가요?

답변 2

1

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

안녕하세요.

조금 틀린 부분을 잡아드리자면 "정의"는 되는데 "접근"하면 에러가 발생합니다.

여튼 틀린 코드가 나오지는 않으니 안된다고 생각하셔도 큰 무리는 없습니다.

 

질문 주신 코드는 아래 형식이 맞을까요?

public class Main {
    public static void main(String[] args) {
        // 업캐스팅으로 호출
        Parent parent = new Child(10);
        // Child 객체가 생성되고 Parent 타입으로 참조됨
    }
}

class Parent {
    public Parent() {
        System.out.println("CST");
    }
}

class Child extends Parent {
    // 부모와 다른 파라미터를 가진 생성자만 있음
    public Child(int num) {
        // 부모의 기본 생성자 호출 (생략 가능)
        super();
        System.out.println("CST2-" + num);
    }
}

출력값:

CST

CST2-10

 

이렇게도 가능하긴 합니다.

super()를 명시적으로 부르지 않으면 어떻게 될까요?

주석에 작성된 것처럼 Java가 자동으로 부모의 기본생성자를 호출해주기 때문에 정상적으로 똑같이 동작합니다.

 

위의 코드가 부모와 파라미터까지 동일한 생성자가 없어도 되는 경우겠죠.

 

이 코드 예시를 문의하신 게 맞을까요?

추가 질문이 있으면 대댓글로 부탁드립니다!

 

0

인프런 AI 인턴님의 프로필 이미지

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

자바에서 업캐스팅과 관련된 좋은 질문을 주셨습니다. 자바의 상속과 업캐스팅을 이해하는 데에 중요한 개념인 생성자와 메서드의 차이를 설명드리겠습니다.

생성자와 메서드의 차이

  1. 생성자:

    • 생성자는 클래스의 객체가 생성될 때 호출되는 특별한 메서드입니다. 생성자의 이름은 클래스명과 같아야 하며, 반환형이 없습니다.
    • 자식 클래스의 객체를 생성할 때 부모 클래스의 생성자가 자동으로 호출됩니다. 자바에서는 부모 클래스에 명시적인 생성자가 없으면, 기본 생성자가 자동으로 추가되고 호출됩니다.
    • 자식 클래스에 부모와 동일한 파라미터의 생성자가 없어도 각 클래스마다 별도로 생성자를 정의할 수 있기 때문에 자식 클래스에서 생성자의 파라미터를 부모와 다르게 정의해도 문제가 되지 않습니다.
  2. 메서드:

    • 메서드는 클래스 내에서 정의된 함수로, 객체에 의해 호출됩니다.
    • 업캐스팅된 경우, 부모 클래스에 정의된 메서드만 호출이 가능합니다. 자식 클래스에서 부모 클래스에 없는 새로운 메서드를 정의해도 업캐스팅된 부모 타입의 참조로는 사용할 수 없습니다. 이를 해결하기 위해서는 다운캐스팅을 통해 자식 객체로 변환해야 합니다.

추가 설명

업캐스팅을 사용하는 이유는 주로 다형성(Polymorphism)을 통한 코드의 유연성과 재사용성을 향상시키기 위함입니다. 업캐스팅은 부모 클래스의 인터페이스를 사용해 자식 클래스의 객체를 동일한 방식으로 처리할 수 있게 합니다.

다시 요약하자면, 생성자는 각 클래스의 객체 생성을 위해 필요하며, 자식 클래스에서 부모와 다르게 정의될 수 있습니다. 반대로 업캐스팅된 객체는 부모 클래스에 정의된 메서드만을 사용할 수 있습니다.

관련 질문 및 답변

자바 상속과 업캐스팅 관련하여 추가로 읽어볼만한 관련 질문과 답변은 다음을 참고하세요:

  1. 자바 상속과 업캐스팅 예제
  2. 상속과 업케스팅 개념 정리

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