java中抽象類和介面的區別

2021-08-19 16:19:04 字數 1201 閱讀 1426

抽象類特點:

1.抽象類中可以構造方法

2.抽象類中可以存在普通屬性,方法,靜態屬性和方法。

3.抽象類中可以存在抽象方法。

4.如果乙個類中有乙個抽象方法,那麼當前類一定是抽象類;抽象類中不一定有抽象方法。

5.抽象類中的抽象方法,需要有子類實現,如果子類不實現,則子類也需要定義為抽象的。

介面1.在介面中只有方法的宣告,沒有方法體。

2.在介面中只有常量,因為定義的變數,在編譯的時候都會預設加上

public static final

3.在介面中的方法,永遠都被public來修飾。

4.介面中沒有構造方法,也不能例項化介面的物件。

5.介面可以實現多繼承

6.介面中定義的方法都需要有實現類來實現,如果實現類不能實現介面中的所有方法

7.則實現類定義為抽象類。

含有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型別。

java中抽象類和介面的區別

1 概念 抽象類 abstract class 宣告方法的存在但不去實現它的類叫做抽象類。抽象類中可以有實現了的方法,也可以沒有實現了的方法 抽象類中可以沒有抽象的方法,但有抽象方法的類一定是抽象類。抽象類與普通類最大的區別是它不能被直接例項化,只能通過子類間接例項化。介面 inte ce 是抽象類...

JAVA 中 抽象類和介面的區別

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

java中抽象類和介面的區別

在物件導向的概念中,我們知道所有的物件都是通過類來描繪的,但是並不是所有的類都是用來描繪物件的,如果乙個類中沒有包含足夠的資訊來描繪乙個具體的物件,這樣的類就是抽象類。抽象類往往用來表徵我們在對問題領域進行分析 設計中得出的抽象概念,是對一系列看上去不同,但是本質上相同的具體概念的抽象,我們不能把它...