之所以叫作這個名字
除了有一定的歷史原因外
也是由於在傳統意義上
類繼承圖的畫法是根位於最頂部
再逐漸向下擴展(當然
可根據自己的習慣用任何方法描繪這種圖)
因素
Wind
java的繼承圖就象下面這個樣子
由於造型的方向是從衍生類到基礎類
箭頭朝上
所以通常把它叫作
上溯造型
即Upcasting
上溯造型肯定是安全的
因為我們是從一個更特殊的類型到一個更常規的類型
換言之
衍生類是基礎類的一個超集
它可以包含比基礎類更多的方法
但它至少包含了基礎類的方法
進行上溯造型的時候
類接口可能出現的唯一一個問題是它可能丟失方法
而不是贏得這些方法
這便是在沒有任何明確的造型或者其他特殊標注的情況下
編譯器為什麼允許上溯造型的原因所在
也可以執行下溯造型
但這時會面臨第
章要詳細講述的一種困境
再論合成與繼承 在面向對象的程序設計中
創建和使用代碼最可能采取的一種做法是
將數據和方法統一封裝到一個類裡
並且使用那個類的對象
有些時候
需通過
合成
技術用現成的類來構造新類
而繼承是最少見的一種做法
因此
盡管繼承在學習OOP的過程中得到了大量的強調
但並不意味著應該盡可能地到處使用它
相反
使用它時要特別慎重
只有在清楚知道繼承在所有方法中最有效的前提下
才可考慮它
為判斷自己到底應該選用合成還是繼承
一個最簡單的辦法就是考慮是否需要從新類上溯造型回基礎類
若必須上溯
就需要繼承
但如果不需要上溯造型
就應提醒自己防止繼承的濫用
在下一章裡(多形性)
會向大家介紹必須進行上溯造型的一種場合
但只要記住經常問自己
我真的需要上溯造型嗎
對於合成還是繼承的選擇就不應該是個太大的問題
From:http://tw.wingwit.com/Article/program/Java/Javascript/201311/25316.html