작성자 없음
작성자 정보가 삭제된 글입니다.
작성
·
2
·
수정됨
0
5-1강의 7분 10초 경에서 추상 클래스인 DiscountPolicy의 calculateDiscount 메소드 구현 관련하여 질문 있습니다.
calculateDiscount 메서드의 로직에서 상영(screening)이 DiscountCondition 중 하나라도 만족하면 getDiscountAmount(screening)이 호출되는데, 이 때 AmountDiscountPolicy와 PercentDiscountPolicy 중 누가 오버라이드한 getDiscountAmount가 호출되는지 궁금하여 질문드립니다.
애초에 Movie 객체가 생성될 때 AmountDiscountPolicy와 PercentDiscountPolicy 중 해당되는 할인 정책을 멤버 변수로 사용할 수 있게 된다고 이해하면 될까요?
객체지향에 대해 심도 있게 배울 수 있는 강의라 너무 잘 듣고 있습니다. ㅎㅎ
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
leesy399님께서 질문하신 내용은 객체지향 프로그래밍의 다형성에 대한 중요한 이해를 돕는 부분입니다. calculateDiscount
메서드에서 getDiscountAmount(screening)
이 호출될 때, 어떤 메서드가 실행될지는 객체의 실제 클래스에 따라 결정됩니다.
다형성: 객체지향 프로그래밍에서 다형성은 동일한 메서드 호출이 객체의 타입에 따라 다르게 동작하게 해주는 중요한 개념입니다. 다형성 덕분에 하나의 인터페이스나 슈퍼클래스(이 경우 DiscountPolicy)의 같은 메서드를 상속받은 여러 서브클래스(AmountDiscountPolicy, PercentDiscountPolicy)에서 각각 다르게 구체화(Overriding)할 수 있습니다.
호출되는 메서드: DiscountPolicy
클래스의 서브클래스가 무엇인지에 따라 getDiscountAmount(screening)
호출 시 실행되는 메서드가 달라집니다. 만약 screening
객체가 AmountDiscountPolicy
타입이라면, AmountDiscountPolicy
가 오버라이드한 getDiscountAmount
가 호출될 것입니다. 반대로, PercentDiscountPolicy
타입이라면 해당 클래스의 메서드가 호출됩니다. 이는 런타임 시점에 객체의 실제 타입에 따라 결정을 내리는 방식(동적 바인딩)으로 이루어집니다.
강의에서 설명된 구체적인 예제와 코드 흐름은 이전 질문과 답변을 통해 확인하실 수 있습니다. 여기서는 DiscountCondition과 다양한 DiscountPolicy 간의 메커니즘을 다루며, 객체지향 설계의 유연성을 설명합니다.
leesy399님 질문에 대한 답이 도움이 되셨기를 바랍니다. 질문이 생길 때마다 언제든지 추가적으로 물어봐 주세요. 강사의 추가적인 설명도 기대하실 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해 드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.