第八章 多態

封裝經過合併特徵和行爲來建立新的數據類型。 實現隱藏則經過將細節私有化,把接口和實現分離開來。 多態的做用是消除類型之間的耦合。java

8.1 再論向上轉型

8.1.1 忘記對象類型

將接口引用當參數傳遞設計

8.2 起色

8.2.1 方法調用綁定

將一個方法調用同一個方法主題關聯起來被稱做綁定。對象

前期綁定:若在程序執行前進行綁定,叫作前期綁定。 後期綁定:在運行時根據對象的類型進行綁定。也叫動態綁定或者運行時綁定。 java中除了static方法和final方法,其餘都是動態綁定。繼承

8.2.2 產生正確的行爲

8.2.3 可擴展性

只有非private方法才能夠被覆蓋,對於導出類中,對與基類中的private方法,最好採用不一樣的名字。接口

8.2.4 缺陷:覆蓋私有方法

private 方法被自動認爲是final方法,並且對導出類是屏蔽的。擴展

8.2.5 缺陷:域與靜態方法

靜態方法是與類、而非與單個的對象相關聯的。數據類型

8.3 構造器和多態

構造器不一樣於其餘種類的方法。涉及到多態時仍然是如此,儘管構造器並非有多態性(他們其實是static方法,隱式的)引用

8.3.1 構造器的調用順序

父類的構造器老是在導出類的構造過程當中被調用,保證每一個父類的構造器都可以被調用。 調用構造器的順序:程序

  • 調用父類構造器
  • 按照聲明順序調用成員的初始化方法。
  • 調用子類構造器的主題。

8.3.2 繼承與清理

銷燬的順序和建立的順序是相反的。方法

8.4 協變返回類型

8.5 用繼承進行設計

更好的方式是首先選擇「組合」。組合更加靈活

8.5 總結

多態意味着 不一樣的形式。在面向對象的設計中,咱們持有從基類繼承而來的相同接口,以及使用該接口的不一樣形式不一樣版本的多態綁定方法。 運用數據的抽象和繼承,能更好的類型和創造多態的例子。

相關文章
相關標籤/搜索