「面向介面程式設計」是乙個很重要的概念,這種思路為我們後期的擴充套件和維護提供很好的條件。它提供了乙個約束,讓程式人員在後續程式設計中在這個規範中去運作,新增的時候,你需要去新增乙個新的類,而不是修改已有的**。實現了對修改的封閉。
這裡的介面並不僅僅是指狹義上的介面,還包括了抽象類。
我們先來分析下抽象類和介面的異同:
1、抽象類和介面都是抽象層,只不過介面的抽象程度更高一點。
2、從設計的角度來講,抽象類是乙個主題的抽象(is-a),介面更像是乙個動作的抽象(has-a)(一般情況下)。
3、從使用角度出發,他們都不能被例項化。你無法直接去new乙個介面或者抽象類。
4、介面的所有方法和抽象類裡的抽象方法都不能有方法體(只能宣告,不能實現)。
5、我們可以去實現(implements)多個介面,但是無法繼承(extends)多個抽象類。
6、抽象類裡的抽象方法子類必須去實現(所以修飾符不能包括static或者private),介面的方法子類也必須全部實現,但是也有特殊情況,如果實現介面的是抽象類,則不需要去實現。
7、在介面中的只能是常量(沒有修飾符的時候,它會自動變成public static final,但是不建議用介面去定義常量),抽象類可以有變數提供給子類去使用。
8、設計過程中,已經確定有固定不變的方法,可以去使用抽象類,把這部分固定不變的方法宣告成具體方法(例如宣告日誌)。
9、推薦使用介面,畢竟has-a比is-a的耦合度低,繼承還是儘量減少使用比較好。
(學習筆記)抽象類和介面
最近準備校招,所以複習的時候想來記錄一下學習的內容。首先聊聊介面類吧 1 抽象類的含義 包含抽象方法的類叫做抽象類。如果乙個類包括乙個或者多個抽象方法,該類必須被限定為抽象方法。2 抽象類的知識點 1.含有abstract修飾符的class即為抽象類,abstract類不能建立例項物件。2.含有ab...
java學習筆記 介面VS抽象類
介面抽象類 對誰抽象 對動作的抽象 對根源的抽象 方法只能做方法申明 方法申明,也可以做方法實現 變數定義的變數只能是公共的靜態的常量 普通變數 子類是否需要全部實現 實現介面的時候,如不能全部實現介面方法,那麼該類也只能為抽象類。抽象方法必須全部被子類所實現,如果子類不能全部實現父類抽象方法,那麼...
Java 介面和抽象類
介面,inte ce,介面泛指供別人呼叫的方法和函式。介面的形式 public inte ce inte cename 介面的特點 1 介面中可以含有變數和方法。2 其中變數被隱式的指定為public static final 變數並且只能是這種變數。3 介面的方法隱式的指定為public abst...