抽象用于不同的事物,而接口用于事物的行為。
從語法層面而言,接口和抽象類的區別如下:
1.抽象類可以提供成員方法的實現細節,而接口中只能存在抽象方法(默認 public abstract)
2.抽象類中的成員變量可以是多種類型,而接口中的成員變量必須用public static final(常量)修飾
3.一個類只能繼承一個抽象類(單繼承),但可以實現多個接口(多繼承)。
4.抽象類中允許含有靜態代碼塊和靜態方法,而接口類不能。
從設計層面而言,接口和抽象類的區別如下:
1.抽象類是對整一個類的屬性,行為等方面進行抽象,而接口則是對行為抽象。就好比飛機和鳥,抽象類抽象 出的是飛行物類。而接口則是抽閑出飛行方法。
2.抽象類是一個模板式的設計,當在開發過程中出現需求更改的情況,只需要更改抽象類而不需要更改它的子類。接口是一種輻射性設計,當接口的內容發生改變時,需要同時對實現它的子類進行相應的修改。
3.抽象類可以類比為模板,而接口可以類比為協議