JAVA中介面和抽象類的區別

ustcyy91發表於2016-11-30

Java 提供和支援建立抽象類和介面。它們的實現有共同點:

1)都是抽象的,不能建立例項物件。

2)雖然不能直接通過new建立例項物件,但是可以宣告變數,通過變數指向子類或者實現類的物件來建立例項物件。


不同點在於:  

1)介面中所有的方法隱含的都是抽象的。而抽象類則可以同時包含抽象和非抽象的方法。 

2)類可以實現很多個介面,但是隻能繼承一個抽象類 

3)類如果要實現一個介面,它必須要實現介面宣告的所有方法。但是,類可以不實現抽象類聲 明的所有方法,當然,在這種情況下,類也必須得宣告成是抽象的。 抽象類可以在不提供介面方法實現的情況下實現介面。 

4)Java 介面中宣告的變數預設都是 final 的。抽象類可以包含非 final 的變數。 Java 介面中的成員函式預設是 public 的。抽象類的成員函式可以是 private,protected 或者 是 public。 

5)介面是絕對抽象的,不可以被例項化。抽象類也不可以被例項化,但是,如果它包含 main 方法的話是可以被呼叫的。 也可以參考 JDK8 中抽象類和介面的區別 

相關文章