이해를 위한 메모 공간

12.다형성 활용 및 다운 캐스팅

자바게 2020. 3. 31. 16:51

앞에서 배운 상속과 다형성을 활용하면 프로그램을 유지보수하는 데 매우 편리합니다. 이때 배열을 함께 사용하면 여러 하위 클래스 자료형을 상위 클래스 자료형으로 한꺼번에 관리할 수도 있습니다.

 

GoldCustomer 클래스는 지불 가격과 보너스 포인트를 계산하는 calcPrice() 메소드만 재정의 하였다.

 

새로운 고객 등급이 생겼습니다. 이 등급의 고객은 VIP 고객 과 보너스 포인트 적립률이 다르고 담당 상담원도 없습니다.

 

테스트 프로그램의 구현

재정의한 메소드가 가상 메소드방식에 의해 자동으로 호출되지 않는다면 if-else if문을 사용하여 각 자료형에 적합한 코드를 따로 구현해야 할 것입니다. 게다가 새로운 등급의 고객이 추가로 필요한 경우에는 또 다른 조건을 구현해야 하므로 코드의 유지보수가 어려워집니다. 이런경우에 상속과 다형성을 잘 활용하면 복잡한 코드를 간결하게 줄일 수 있고 확장성 있는 프로그램을 구현할 수 있습니다.

 

다운캐스팅과 instaceof

 

하위 클래스로 형 변환, 다운 캐스팅

앞에서 상위 클래스로 형 변환이 묵시적으로 이루어지는 과정을 알아보았습니다. 여기에서는 다시 하위 클래스로 형 변환이 되는 과정을 살펴보겠습니다.

 

Animal 클래스의 상속을 받은 하위 클래스 Human, Tiger, Eagle
다운 캐스팅후 각각의 클래스에 선언된 메소드를 실행하는 프로그램