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

코린이님의 프로필 이미지
코린이

작성한 질문수

Do it! 자바 프로그래밍 입문 with 은종쌤

오버라이딩과 다형성(3)

형 변환의 이유가 궁금합니다.

작성

·

175

0

형 변환을 사용하면 선생님께서 설명해주신 것처럼 쓸 수 있다는 것은 이해가 되었습니다.

VIPCustomer customerWho = new VIPCustomer(10010, "Who", 100);

그런데 위와 같이 형 변환을 하지 않고 그대로 적은 것이랑 무슨 차이가 있는지 모르겠습니다.

감사합니다.

답변 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고객에게 일반고객 할인정책을 부여해서는 안되겠죠

따라서 범용성의 문제가 아니라고 생각됩니당.

코린이님의 프로필 이미지
코린이

작성한 질문수

질문하기