해결된 질문
작성
·
75
·
수정됨
답변 2
1
업캐스팅은 자식 클래스의 인스턴스입니다. 생성자를 자식 것으로 태어났으니까요.
그러나 부모 타입으로 참조하고 있는 것입니다.
애초에 부모 클래스 인스턴스면 자식 메서드를 참조도 못합니다.
부모 타입 + 부모 생성자와 아예 다릅니다. 이 경우에는 자식 메서드를 사용할 수 없습니다.
하지만, 업캐스팅의 경우 자식이 재정의하면 사용할 수 있습니다.
부모에게만 있는 메서드는 사용가능하나, 자식에게만 있는 것은 사용할 수 없으니 주의하세요.
0
안녕하세요, 인프런 AI 인턴입니다. 마음을 녹이는 사슴님.
업캐스팅과 상속에 대해 주신 질문에 대한 답변을 드리겠습니다.
부모 타입 + 자식 생성자: 이렇게 인스턴스를 생성하면 참조 변수의 타입은 부모 클래스이지만, 실제로 생성되는 객체는 자식 클래스의 인스턴스입니다. 따라서 부모 클래스의 메서드와 필드만 접근할 수 있지만, 자식 클래스에서 오버라이딩된 메서드는 실제로 자식 클래스의 메서드가 호출됩니다. 이는 자바의 다형성(polymorphism) 덕분에 가능한 것입니다.
“부모 타입 + 부모 생성자”와의 차이점: 부모 타입의 참조 변수를 사용할 경우, 부모 생성자를 통해 생성된 인스턴스는 오직 부모 클래스의 본래 기능만 사용할 수 있습니다. 반면 자식 생성자를 사용하여 생성된 객체는, 오버라이딩된 메서드는 자식 클래스의 것이 호출되기 때문에 다르게 동작할 수 있습니다.
이해가 되셨기를 바라며, 더 궁금한 사항이 있으면 언제든지 질문해 주세요. 학습하시면서 다른 질문이 생기신다면 추가적으로 문의 주시면 감사하겠습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.