• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

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

21.03.29 17:33 작성 조회수 120

0

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

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

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

감사합니다.

답변 2

·

답변을 작성해보세요.

2

const.takeo님의 프로필

const.takeo

2021.03.29

VIPCustomer customerWho = new VIPCustomer(10010, "Who", 100)의 경우는 

VIPCustomer 클래스에 적혀있는 메소드와 멤버변수를 사용할수있겠죠

타입을

Customer customerWho = new VIPCustomer(10010, "Who", 100) 로 했을경우에는

Customer 클래스에 정의한 메소드와 멤버변수를 활용할수있을것이구요

0

코린이님의 프로필

코린이

질문자

2021.03.29

답변 감사합니다!

그런데 VIPCustomer는 이미 Customer를 상속받고 있어서 Customer의 메소드와 멤버변수를 사용할 수 있으니 VIPCustomer customerWho = new VIPCustomer(10010, "Who", 100)로 하는 것이 더 범용성이 큰 것 아닌가요?

const.takeo님의 프로필

const.takeo

2021.03.30

VIPCustomer는 Customer를 상속받았으나 calcPrice라는 메소드를 오버라이딩해서 재정의했기때문에 메소드를 실행했을때의 결과값이 다릅니다.

따라서 상황에 맞게 타입을 정해서 사용해주시면 될것같습니다.

일반 고객도있어야하고

VIP고객도 있어야하기때문에

일반고객타입 -> Customer타입을 만들어두고

VIP고객타입 -> Customer타입을 계승

두개의 타입으로 나눈거고

VIP고객의 경우 별도의 할인가격이 필요했기에 Customer타입의 calcPrice메소드를 오버라이드해서 사용한것입니다.

VIP고객에게 일반고객 할인정책을 부여해서는 안되겠죠

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