작성
·
341
·
수정됨
0
안녕하세요
public int discount(Member member, int price, String discountCode) {
DiscountPolicy discountPolicy = policyMap.get(discountCode);
return discountPolicy.discount(member, price);
}
코드에서 참조변수 discountPolicy 에 FixDiscountPolicy 혹은 RateDiscountPolicy의 객체가 오게 될텐데요
참조변수 선언을 DiscountPolicy 로 했는데 discount 메소드를 어떻게 사용할 수 있는것이죠?
런타임 시점에 자식 타입으로 뿅 하고 변하는건가요?
바보같은 질문 죄송합니다 ^^,,;;
답변 1
1
안녕하세요. 동헌님, 공식 서포터즈 David입니다.
DiscountPolicy 인터페이스는 discount()를 정의하고 있고
DiscountPolicy 인터페이스를 구현한 구현체는 discount()를 재정의 하게 됩니다.
따라서, DiscountPolicy 타입 변수에 구현체의 참조값이 들어가고, discount()가 호출되면 구현체에서 재정의한 discount()가 호출되게 됩니다.
이와 관련된 자세한 사항은 실전 자바 기본편 - 인터페이스를 참고해 주세요:)
감사합니다.