인프런 커뮤니티 질문&답변
4분 45초 질문
해결된 질문
작성
·
47
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. 이동근님.
Java에서 객체 지향 프로그래밍과 상속의 동작에 대해 궁금한 점을 문의하셨군요. 질문에 있는 사례를 통해 그 개념을 명확하게 이해할 수 있도록 도와드리겠습니다.
핵심 개념 설명
업캐스팅과 메서드 호출:
- 업캐스팅은 자식 클래스 객체를 부모 클래스 타입의 참조 변수로 가리키는 동작을 의미합니다. 이 경우, 객체의 실제 타입은 자식 클래스이지만 부모 클래스 타입의 참조를 사용하게 됩니다.
- 메서드 호출 시 자바는 객체의 실제 타입을 기준으로 실행합니다. 따라서, 자식 클래스에서 오버라이딩된 메서드가 있다면, 업캐스팅이 되더라도 그 자식 클래스의 메서드를 호출합니다.
- 업캐스팅은 자식 클래스 객체를 부모 클래스 타입의 참조 변수로 가리키는 동작을 의미합니다. 이 경우, 객체의 실제 타입은 자식 클래스이지만 부모 클래스 타입의 참조를 사용하게 됩니다.
this 키워드:
this.display();를 사용하면 현재 객체의 메서드를 실행하게 됩니다. 따라서 객체가 자식 클래스의 인스턴스라면 자식 클래스의display()메서드를 호출하게 됩니다.
- 즉, 자식 클래스에만 있는 메서드가 문제가 되지 않으며, 오버라이딩된 메서드가 호출됩니다.
문제 상황:
- 부모에 없는 메서드를 자식에서 직접적으로 호출하려 할 때, 부모 타입으로 선언된 참조에서는 호출할 수 없는 것이 맞지만, 자식 객체 자체에서 호출하면 부모 타입과 상관없이 자식의 메서드가 호출됩니다.
- 부모에 없는 메서드를 자식에서 직접적으로 호출하려 할 때, 부모 타입으로 선언된 참조에서는 호출할 수 없는 것이 맞지만, 자식 객체 자체에서 호출하면 부모 타입과 상관없이 자식의 메서드가 호출됩니다.
유사 사례와 링크
추가적으로 참고할 수 있는 Q&A 링크를 첨부합니다:
- Java에서 메서드 호출 관련 사례: 업캐스팅 상황에서의 메서드 호출 설명.
- 상속과 오버라이딩에 대한 기초 질문: 객체 생성과 메서드 호출의 차이에 대한 설명.
이해가 되셨기를 바라며, 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 더 구체적인 답변을 제공해 주실 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




