java抽象類和接口類

        接口和抽象類都能描述通常性的公有特徵。通常來講,強是關係(strong is-a relationship)清晰地描述了父子關係,應該用類模擬,好比蘋果是一種水果;而弱是關係(weak is-a relationship)是指對象具備某種屬性,適合用接口模擬,好比蘋果是能夠吃的。

        因爲子類只能擴展一個父類,而能實現多個接口,因此接口比抽象類更靈活。可是接口不能包括具體的方法,而抽象類能夠,要將兩種好處結合起來,能夠建立一個接口和一個實現該接口的抽象類(便利類),而後根據狀況決定使用哪一個。

        接口不變性是指不改變接口的使用方法,可是能夠改變接口的具體實現方法,而接口的實現對用戶是透明的,用戶不須要關心接口的實現,只要知道如何使用接口就好了,因此接口不變性爲用戶提供了便利。
        抽象類也同樣,內部實現能夠由於須要而更改(好比改進了算法),可是提供給用戶的使用方法不要輕易改變算法

  小結  1.abstract class 在 Java 語言中表示的是一種繼承關係,一個類只能使用一次繼承關係。可是,一個類卻能夠實現多個interface。  2.在abstract class 中能夠有本身的數據成員,也能夠有非abstarct的成員方法,而在interface中,只可以有靜態的不能被修改的數據成員(也就是必須是static final的,不過在 interface中通常不定義數據成員),全部的成員方法都是abstract的。  3.abstract class和interface所反映出的設計理念不一樣。其實abstract class表示的是"is-a"關係,interface表示的是"like-a"關係。   4.實現抽象類和接口的類必須實現其中的全部方法。抽象類中能夠有非抽象方法。接口中則不能有實現方法。  5.接口中定義的變量默認是public static final 型,且必須給其初值,因此實現類中不能從新定義,也不能改變其值。  6.抽象類中的變量默認是 friendly 型,其值能夠在子類中從新定義,也能夠從新賦值。   7.接口中的方法默認都是 public,abstract 類型的。
相關文章
相關標籤/搜索