第八章:多態
一、多態是繼數據抽象和繼承之後的第三種特徵
- 多態通過分離做什麼和怎麼做,消除類型之間的耦合關係
二、向上轉型
- Java中除了static方法和final方法(private方法默認也是final修飾的),其它所有方法都是後期綁定。
- 特殊注意事項(以下情況,多態不會發生):
- 覆蓋父類的private方法
- 訪問父類的成員或者靜態方法
三、再論初始化
情景描述:
當父類構造器中,調用了本身的一個實例方法,而這個實例方法又被子類所重寫,
那麼在執行初始化子類對象時,這個被子類重寫的方法會被調用,
但是其中涉及到成員變量的,全部是默認值(0或者null)。
- 在構造器內唯一能夠安全調用的只有private或者final方法。
- 初始化過程:
- 在其它任何事情發生之前,將分配給對象的存儲空間初始化爲二進制的0
- 調用幾類構造器
- 按聲明順序進行成員變量初始化
- 執行導出類構造器
四、總結
- 用繼承表達行爲之間的差異,用字段表達狀態之間的變化
- 多態意味着不同的形式,我們持有從基類繼承而來的相同的接口,以及使用該接口的不同形式,不同版本的動態綁定方法。
- 多態是一種不能單獨看待的特性,它與抽象+繼承一起協同工作。