java中的向上轉型有什麼妙用?

假如你在一個物流運輸公司,有個客戶要求你爲他運輸一定數量的產品到某地,使用某種交通工具.那我們假設你的管理程序中有Truck類,Train類,Plane類專門用來實現使用不同交通工具的成本計算,都有方法cost(Double weight,Double space);那麼,問題出來了.客戶對於運輸器種類是可選擇的,你是不是要對每種運輸器new個實例放到不同的service方法中爲客戶服務呢?
很明顯這麼做有很多代碼重複,而且效率太低.那麼爲什麼不構造一個運輸工具的父類:

然後子類Truck,Plane,Train分別實現cost方法
再構造一個工廠類爲客戶製造子類實例

服務程序的方法實現:

看上面服務層的代碼多簡單‘,而且在MVC層次結構中方法和類的設計也和麪向對象.這就是上塑造型給我們帶來的好處咯
這回就方便了,需要Truck的時候,客戶只要告訴你他要用卡車運輸運多少距離多遠.那業務員就在option按扭裏面選擇”卡車”在文本框裏輸入重量多少距離多遠.veiw層把數據傳給controler處理成我們的服務程序需要的數據類型.然後服務程序被controler調用,用transportCost方法計算出成本返回給veiw,顯示給業務員,業務員就可以告訴客戶需要支付多少錢啦‘

 

 

可以應用java中的上轉型對象,實現java編程的多態。

    上轉型對象不是父類創建的對象,而是子類對象的“簡化”狀態,它不關心子類新增的功能,只關心子類繼承和重寫的功能。
    當一個類有很多子類時,並且這些子類都重寫了父類中的某個方法。
當使用上轉型對象在調用這個方法時就可能具有多種形態。因爲不同的子類在重寫父類的方法時可能產生不同的行爲。也就是說,不同對象的上轉型對象調用同一方法可能產生不同的行爲。

    例如下面的程序你測試一下就可以理解這樣的用法。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章