“對於面向對象的程序設計語言,多型性是第三種最基本的特征(前兩種是數據抽象和繼承。”
“多形性”(Polymorphism)從另一個角度將接口從具體的實施細節中分離出來,亦即實現了“是什麼”與“怎樣做”兩個模塊的分離。利用多形性的概念,代碼的組織以及可讀性均能獲得改善。此外,還能創建“易於擴展”的程序。無論在項目的創建過程中,還是在需要加入新特性的時候,它們都可以方便地“成長”。
通過合並各種特征與行為,封裝技術可創建出新的數據類型。通過對具體實施細節的隱藏,可將接口與實施細節分離,使所有細節成為“private”(私有)。這種組織方式使那些有程序化編程背景人感覺頗為舒適。但多形性卻涉及對“類型”的分解。通過上一章的學習,大家已知道通過繼承可將一個對象當作它自己的類型或者它自己的基礎類型對待。這種能力是十分重要的,因為多個類型(從相同的基礎類型中衍生出來)可被當作同一種類型對待。而且只需一段代碼,即可對所有不同的類型進行同樣的處理。利用具有多形性的方法調用,一種類型可將自己與另一種相似的類型區分開,只要它們都是從相同的基礎類型中衍生出來的。這種區分是通過各種方法在行為上的差異實現的,可通過基礎類實現對那些方法的調用。
在這一章中,大家要由淺入深地學習有關多形性的問題(也叫作動態綁定、推遲綁定或者運行期綁定)。同時舉一些簡單的例子,其中所有無關的部分都已剝除,只保留與多形性有關的代碼。