1. 程式人生 > >16 baseService(抽象類和介面的區別)

16 baseService(抽象類和介面的區別)

 

 

 

 

 

從語法層面而言,介面和抽象類的區別如下:

1.抽象類可以提供成員方法的實現細節,而介面中只能存在抽象方法(預設 public abstract)

2.抽象類中的成員變數可以是多種型別,而介面中的成員變數必須用public static final(常量)修飾

3.一個類只能繼承一個抽象類(單繼承),但可以實現多個介面(多繼承)。
4.抽象類中允許含有靜態程式碼塊和靜態方法,而介面類不能。

從設計層面而言,介面和抽象類的區別如下:

1.抽象類是對整一個類的屬性,行為等方面進行抽象,而介面則是對行為抽象。就好比飛機和鳥,抽象類抽象出的是飛行物類。而介面則是抽閒出飛行方法。

2.抽象類是一個模板式的設計,當在開發過程中出現需求更改的情況,只需要更改抽象類而不需要更改它的子類。介面是一種輻射性設計,當介面的內容發生改變時,需要同時對實現它的子類進行相應的修改。

3.抽象類可以類比為模板,而介面可以類比為協議

1 .介面只能包含抽象方法,抽象類可以包含普通方法。

2. 介面只能定義靜態常量屬性,抽象類既可以定義普通屬性,也可以定義靜態常量屬性。
3 .介面不包含構造方法,抽象類裡可以包含構造方法。
4.抽象類不能被例項化,但不代表它不可以有建構函式,抽象類可以有建構函式,備繼承類擴充
5.介面是核心,其定義了要做的事情,包含了許多的方法,但沒有定義這些方法應該如何做。
6. 如果許多類實現了某個介面,那麼每個都要用程式碼實現那些方法
7.如果某一些類的實現有共通之處,則可以抽象出來一個抽象類,讓抽象類實現介面的公用的程式碼,而那些個性化的方法則由各個子類去實現。
所以,抽象類是為了簡化介面的實現,他不僅提供了公共方法的實現,讓你可以快速開發,又允許你的類完全可以自己實現所有的方法,不會出現緊耦合的問題。