抽象類和介面區別

2021-09-02 14:07:21 字數 805 閱讀 7517

含有abstract修飾符的class即為抽象類,abstract類不能建立的例項物件。含有abstract方法的類必須定義為abstract class,abstract class類中的方法不必是抽象的。abstract class類中定義抽象方法必須在具體(concrete)子類中實現,所以,不能有抽象構造方法或抽象靜態方法。如果的子類沒有實現抽象父類中的所有抽象方法,那麼子類也必須定義為abstract型別。  

介面(inte***ce)可以說成是抽象類的一種特例,介面中的所有方法都必須是抽象的。介面中的方法定義預設為public abstract型別,介面中的成員變數型別預設為public static final。  

下面比較一下兩者的語法區別:  

1.抽象類可以有構造方法,介面中不能有構造方法。  

2.抽象類中可以有普通成員變數,介面中沒有普通成員變數  

3.抽象類中可以包含非抽象的普通方法,介面中的所有方法必須都是抽象的,不能有非抽象的普通方法。  

4. 抽象類中的抽象方法的訪問型別可以是public,protected和(預設型別,雖然  

eclipse下不報錯,但應該也不行),但介面中的抽象方法只能是public型別的,並且預設即為public abstract型別。  

5. 抽象類中可以包含靜態方法,介面中不能包含靜態方法  

6. 抽象類和介面中都可以包含靜態成員變數,抽象類中的靜態成員變數的訪問型別可以任意,但介面中定義的變數只能是public static final型別,並且預設即為public static final型別。  

7. 乙個類可以實現多個介面,但只能繼承乙個抽象類。  

抽象類和介面區別

在開發人員崗位面試時,是否了解抽象類和介面之間的基本區別是乙個很重要的考量因素。完全不是。筆者面試過很多人,通常問的第乙個問題是關於介面和抽象類的區別。但實際上很少有程式設計師能給出正確的答案。就這個問題來說,初級程式設計師可能都會清楚之間的區別,可能也並不一定理解其背後的原因,但其結構上的差異,特...

抽象類與介面區別

抽象類 抽象類無法例項化 即不能new 使用抽象方法,該方法是只需宣告不需要實現。抽象方法需要定義在抽象類中,乙個類包含抽象方法,這個類一定是抽象類。如果某個類是抽象類,他可以有具體方法 有宣告,有實現 也可以有抽象方法。子類繼承父類 該父類為抽象類 就要實現該父類的所定義的所有抽象方法,否則該子類...

java中抽象類和介面區別

抽象類前使用abstract關鍵字修飾,則該類為抽象類 應用場景 在某些情況下,某個父類只是知道其子類應該包含怎樣的方法,但無法準確的知道這些子類如何實現這些方法。從多個具有相同特徵的類中抽象出乙個抽象類,以這個抽象類作為子類的模板,從而避免了子類設計的隨意性 作用 限制規定子類必須實現某些方法,但...