抽象類和介面的區別

2021-07-09 02:35:54 字數 1261 閱讀 7167

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

介面(inte***ce)可以說成是抽象類的特例。介面中的所有方法都必須是抽象的,介面中的方法定義預設為public abstract 。介面中的變數是全域性常量,即public static final修飾的。

1. 定義

抽象類定義規則abstract class,介面定義規則inte***ce。

2. 構造方法

抽象類可以有構造方法,但不能是抽象的,而介面中不能有構造方法。

3. 普通方法

抽象類中可以存在非抽象的方法,定義的抽象方法可以被public、protected

和預設型別修飾,而介面中只能有抽象方法,訪問型別修飾符只能是public,預設被public abstract修飾,但是jdk8新版本中規定介面中可以定義非抽象方法,也就是實現方法。

4. 普通變數

抽象類中可以定義普通的成員變數。而介面中不能的定義成員變數。

5. 靜態方法

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

6. 靜態變數

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

7. 繼承和多型

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

8. 具體應用

介面更多的是在系統框架設計方法發揮作用,主要定義模組之間的通訊,而抽象類在**實現方面發揮作用,可以實現**的重用

抽象類和介面的區別

要結合來使用,從而互補長短。接下來先說說抽象類和介面的區別。區別一,兩者表達的概念不一樣。抽象類是一類事物的高度聚合,那麼對於繼承抽象類的子類來說,對於抽象類來說,屬於 是 的關係 而介面是定義行為規範,因此對於實現介面的子類來說,相對於介面來說,是 行為需要按照介面來完成 這些聽起來有些虛,舉個例...

抽象類和介面的區別

net提供了介面,這個不同於class或者struct的型別定義。介面有些情況,看似和抽象類一樣,因此有些人認為在.net可以完全用介面來替換抽象類。其實不然,介面和抽象類各有長處和缺陷,因此往往在應用當中,兩者要結合來使用,從而互補長短。接下來先說說抽象類和介面的區別。區別一,兩者表達的概念不一樣...

抽象類和介面的區別

net提供了介面,這個不同於class或者struct的型別定義。介面有些情況,看似和抽象類一樣,因此有些人認為在.net可以完全用介面來替換抽象類。其實不然,介面和抽象類各有長處和缺陷,因此往往在應用當中,兩者要結合來使用,從而互補長短。接下來先說說抽象類和介面的區別。區別一,兩者表達的概念不一樣...