1.在面向對象的程式設計語言中,多态是繼承資料抽象和繼承之後的第三基本特征。
2.“封裝”通過合并特征和行為來建立新的資料類型。
3.“實作隐藏”則通過将細節“私有化”,把接口和實作分離開來。
4.多态的作用則是消除類型之間的耦合關系。
5.耦合就是指兩個或兩個以上的實體互相依賴于對方的一個量度。
6.多态也稱作動态綁定、後期綁定或運作時綁定。
7.将一個方法調用同一個方法主體關聯起來被稱作“綁定”。
8.“前期綁定”:程式執行前進行的綁定,由編譯器和連接配接程式實作。面向對象的語言不需要選擇就預設的綁定方式。
9.Java中除了static方法和final方法(private方法屬于final方法)之外,其它所有方法都是後期綁定。
10.為什麼要将某個方法聲明為final呢?
(1)它可以防止其它人覆寫該方法。
(2)也是更為重要的一點。這樣做可以有效地“關閉”動态綁定,或者說,告訴編譯器不需要對其進行動态綁定。這樣,編譯器就可以為final方法調用生成更有效的代碼。然而,大多數情況下,這樣做對程式的整體性能不會有什麼改觀。是以,最好根據設計來決定是否使用final,而不是出于試圖提高性能的目的來使用final。
11.多态的一個簡單的例子:
運作結果:
由于多态(後期綁定),還是正确調用了Circle draw()和Square draw()。
12.Java中的“抽象方法”相當C++語言中的純虛函數。
13.構造函數并不具有多态行(它們實際上是static方法,隻不過該static聲明是隐式的)。
14.在構造函數内部調用一個動态綁定的方法,那麼被調用的方法所操縱的成員可能還未初始化(可能造成一些難以發現的隐含的錯誤)。如下例子:
15.複雜對象的初始化過程:
1)在其他任何事物發生之前,将配置設定給對象的存儲空間初始化成二進制的零。
2)調用基類構造函數,一個反複遞歸,直至最低層的基類。
3)按照聲明的順序調用成員的初始化方法。
4)調用導出類的構造函數
16.如果不是後期綁定,就不是多态。如方法重載,它是屬于非面向對象的特性。