장바구니와 주문 기능에 이어, 할인 정책 기능을 추가하기로 했다. 할인 방식에는 대표적으로 정액 할인과 정률 할인이 있다.이를 위해 할인을 추상화하고, 정액 할인과 정률 할인을 구체적으로 구현하고자 했다. 그런데 할인을 abstract class로 정의할지, interface로 정의할지 고민이 되었다.둘 다 추상 메소드를 통해 다형성을 제공한다는 점 때문이었다.둘의 역할이 정확히 어떻게 되는걸까? 추상 클래스는 멤버 변수와 메소드를 가질 수 있으며, 상속을 통하여 사용할 수 있다.공통적인 기능을 갖지만 특정 기능은 구현 클래스에서 달라질 수 있다. 예를 들어, 동물을 객체로 구현할 때 추상 클래스를 사용할 수 있다.동물 추상 클래스에는 먹기, 자지와 같은 공통적 행동을 정의할 수 있다.그리고 동물 추상..