1. 程式人生 > >類(class),抽象類(abstract), 介面(interface)的關係和區別

類(class),抽象類(abstract), 介面(interface)的關係和區別

抽象類:

抽象類不能被例項化
抽象類可以不包含抽象類, 但是有抽象類的方法一定是抽象類
任何子類必須重寫父類的抽象方法, 或者自己也是抽象類
抽象類中的抽象方法只是宣告,不包含方法體
構造方法和類方法(static 修飾的方法)不能宣告為抽象方法

介面

介面不能被例項化
介面沒有構造方法
介面中的所有方法必須是抽象方法
介面不能包含成員變數(除了static 和 final 變數)
介面不是被類繼承了, 而是被類實現了
介面支援多重繼承
介面中每一個方法也是隱式抽象的,介面中的方法會被隱式的指定為 public abstract(只能是 public abstract,其他修飾符都會報錯)。
介面中可以含有變數,但是介面中的變數會被隱式的指定為 public static final 變數(並且只能是 public,用 private 修飾會報編譯錯誤。

抽象類和介面的區別

抽象類中的方法可以有方法體,就是能實現方法的具體功能,但是介面中的方法不行。
抽象類中的成員變數可以是各種型別的,而介面中的成員變數只能是 public static final 型別的。
介面中不能還有靜態程式碼塊以及靜態方法(用 static 修飾的方法),而抽象類是可以有靜態程式碼塊和靜態方法。
一個類只能繼承一個抽象類,而一個類卻可以實現多個介面。