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

알고리즘가즈앙님의 프로필 이미지

작성한 질문수

스프링 핵심 원리 - 기본편

스프링 빈 조회 - 상속 관계

isInstanceOf가 왜 여러개로 되나영?

해결된 질문

작성

·

64

·

수정됨

0

@Test @DisplayName("부모 타입으로 조회시,자식이 둘 이상 있으면,빈이름을 지정하면 된다.") void findBeanByParentTypeBeanName(){

DiscountPolicy rateDiscountPolicy=ac.getBean("rateDiscountPolicy",DiscountPolicy.class);

assertThat(rateDiscountPolicy).isInstanceOf(RateDiscountPolicy.class);

 

이럴경우

//rateDiscountPolicy로 부터 반환된 실제 객체는 RateDiscountPolicy타입이고

rateDiscountPolicy변수내에 담긴 실제객체가 RateDiscountPolicy타입의 인스턴트인지 비교한다고 커뮤니티에 설명을 해주셧엇는데

assertThat(rateDiscountPolicy).isInstanceOf(DiscountPolicy.class);

왜 이런 경우에도 테스트가 성공되는걸까요?

rateDiscountPolicy로 부터 반환된 실제 객체는 RateDiscountPolicy타입이지 DiscountPolicy타입은 아니지 않나요?

답변 1

0

안녕하세요. 알고리즘가즈앙님, 공식 서포터즈 y2gcoder입니다.

해당 테스트가 성공하는 이유는 자바의 다형성 때문입니다.

rateDiscountPolicyRateDiscountPolicy 클래스의 인스턴스기도 하지만, RateDiscountPolicy가 구현하고 있는 DiscountPolicy 인터페이스의 인스턴스이기도 합니다!

영한님의 김영한의 실전 자바 - 기본편 > 섹션 11. 다형성1 부분을 학습해보시는 것을 추천합니다!

특히 해당 테스트 코드는 자바의 instanceof 지시어랑 동일한 역할을 한다고 이해해주시면 감사하겠습니다 🙂

 

감사합니다.