對象導論之繼承(一)

繼承(一)
  對象這種觀念,本身就是十分方便的工具,使得你可以通過概念將數據和功能封裝到一起,因此可以對問題空間的觀念給出恰當的表示,而不是受制於必須使用底層機器語言。這些概念用關鍵字class來表示,它們形成了編程語言中的基本單位。
  遺憾的是,這樣做還是有很多麻煩:在創建了一個類之後,及時另一個新類與其具有相似的功能,你還是得重新創建一個新類。如果我們能夠以現有的類爲基礎,複製它,然後通過添加和修改這個副本來創建新類那就要好多了。通過繼承邊可以達到這樣的效果,不過也有例外,當源類(被稱爲基類、超類或父類)發生變動是,被修改的“副本”(被稱爲導出類、繼承類或子類)也會反映出這些變動。
  在這裏插入圖片描述
  (這張UML圖中的箭頭從導出類指向基類,就像稍後你會看到的,通常會存在一個以上的導出類)
  類型不僅僅只是描述了作用於一個集合上的約束條件,同時還有與其他類型之間的關係。兩個類型可以有相同的特徵和行爲,但是其中一個類型可能比另一個還有更多的特性,並且可以處理更多的消息(或以不同的方式來處理消息)。繼承使用基類性和導出類型的概念表示了這種類型之間的相似性。一個基類型包含其所有導出類型所共享的特性和行爲。可以創建一個基類性來表示系統中某些對象的核心概念,從基類型中導出其他類型,來表示此核心可以被實現的各種不同方式。
  以垃圾回收機爲例,它用來歸類散落的垃圾。“垃圾”是基類型,每一件垃圾都有重量、價值等特性,可以被切碎、熔化或分解。在此基礎上,可以通過添加額外的特性(例如瓶子有顏色)或行爲(例如鋁罐可以被壓碎,鐵罐可以被磁化)導出更具體的垃圾類型。此外,某些行爲可能不同(例如紙的價值取決於其類型和狀態)。可以通過使用繼承來構建一個類型層次結構,以此來表示待求解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章