작성
·
175
답변 2
2
VIPCustomer customerWho = new VIPCustomer(10010, "Who", 100)의 경우는
VIPCustomer 클래스에 적혀있는 메소드와 멤버변수를 사용할수있겠죠
타입을
Customer customerWho = new VIPCustomer(10010, "Who", 100) 로 했을경우에는
Customer 클래스에 정의한 메소드와 멤버변수를 활용할수있을것이구요
0
답변 감사합니다!
그런데 VIPCustomer는 이미 Customer를 상속받고 있어서 Customer의 메소드와 멤버변수를 사용할 수 있으니 VIPCustomer customerWho = new VIPCustomer(10010, "Who", 100)로 하는 것이 더 범용성이 큰 것 아닌가요?
VIPCustomer는 Customer를 상속받았으나 calcPrice라는 메소드를 오버라이딩해서 재정의했기때문에 메소드를 실행했을때의 결과값이 다릅니다.
따라서 상황에 맞게 타입을 정해서 사용해주시면 될것같습니다.
일반 고객도있어야하고
VIP고객도 있어야하기때문에
일반고객타입 -> Customer타입을 만들어두고
VIP고객타입 -> Customer타입을 계승
두개의 타입으로 나눈거고
VIP고객의 경우 별도의 할인가격이 필요했기에 Customer타입의 calcPrice메소드를 오버라이드해서 사용한것입니다.
VIP고객에게 일반고객 할인정책을 부여해서는 안되겠죠
따라서 범용성의 문제가 아니라고 생각됩니당.