5.接口(Thinking in java學習五)

接口和內部類爲我們提供了一種將接口與實現分離的更加結構化的方法。

抽象類和抽象方法(abstract)

  • 抽象基類,簡稱抽象類:通用接口建立起一種基本形式,以此表示所有導出類的共同部分。
  • 抽象方法:僅有聲明而沒有方法體。
    繼承一個抽象類,就必須爲基類中的所有抽象方法提供方法定義。

注意:

  • 如果一個類包含一個或者多個抽象方法,該類必須被限定爲抽象的。
  • 抽象類是很有用的重構工具,它們使得我們可以很容易地將公共方法沿着繼承層次結構向上移動。

接口(interface)

比抽象概念更加向前邁進了一步,產生一個完全抽象的類,它根本沒有提供任何具體實現。只讓創建者確定方法名、參數列表和返回類型。
接口被用來建立類與類之間的協議。
接口不僅僅是一個極度抽象的類,還可以通過創建一個能夠被向上轉型爲多種基類的類型,來實現某種類似多重繼變種的特性。

接口特性:public和包內訪問權限,接口默認地將域設成static與final的
要讓一個類遵循某個特定接口,需要使用implements關鍵字。

完全解耦

  • 策略設計模式:創建一個能夠根據所傳遞的參數對象的不同而具有不同行爲的方法。
  • 適配器設計模式:適配器中的代碼將接受你所擁有的接口,併產生你所需要的接口。

Java中的多重繼承

使用接口的原因:

  • 爲了能夠向上轉型爲多個基類型,由此帶來的靈活性。
  • 防止客戶端程序員創建該類的對象,並確保這僅僅是建立一個接口。

我們應該選擇接口還是抽象類?

創建不帶任何方法定義和成員變量的基類,就選擇接口,如果知道某事物應該成爲一個基類,那麼也應該使它成爲接口。

通過繼承來擴展接口

通過繼承很容易擴展接口,在接口中增加新方法的聲明,還可以在新接口中組合數個接口。接口繼承可以同時繼承多個接口。

適配接口

接口最吸引人的原因就是允許同一個接口具有多個不同的具體實現。

接口中的域

接口中的域都是自動static和final的,所以接口就可以很便捷的創建常量組。
接口常量組由於Java SE5出現enum枚舉類型後,就沒有太大意義了。

初始化接口中的域
接口中定義的域不能是“空final”,但是可以被非常量表達式初始化。在類加載時初始化。

嵌套接口

接口可以嵌套在類或其他接口中。
類中嵌套接口的語法是比較常見的,可以擁有public和包訪問權限。
接口可以被實現爲private 的,但是其只能被自身調用,實現private接口只是一種方式,不允許向上轉型。

接口與工廠

接口是實現多重繼承的途徑,而生成遵循某個接口的對象的典型方式就是工廠方法設計模式。
工廠對象上調用的是創建的方法,而該工廠對象將生成接口的某個實現的對象。

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