含有abstract修飾符的class即為抽象類,abstract 類不能建立的例項物件。含有abstract方法的類必須定義為abstract class,abstract class類中的方法不必是抽象的。abstract class類中定義抽象方法必須在具體子類中實現,所以,不能有抽象構造方法或抽象靜態方法。如果的子類沒有實現抽象父類中的所有抽象方法,那麼子類也必須定義為abstract型別。
介面(inte***ce)可以說成是抽象類的一種特例,介面中的所有方法都必須是抽象的。介面中的方法定義預設為public abstract型別,介面中的成員變數型別預設為public static final。
下面比較一下兩者的語法區別:
1.抽象類可以有構造方法,介面中不能有構造方法。
2.抽象類中可以有普通成員變數,介面中沒有普通成員變數
3.抽象類中可以包含非抽象的普通方法,介面中的所有方法必須都是抽象的,不能有非抽象的普通方法。
4. 抽象類中的抽象方法的訪問型別可以是public,protected和預設型別,但介面中的抽象方法只能是public型別的,並且預設即為public abstract型別。
5. 抽象類中可以包含靜態方法,介面中不能包含靜態方法
6. 抽象類和介面中都可以包含靜態成員變數,抽象類中的靜態成員變數的訪問型別可以任意,但介面中定義的變數只能是public static型別,並且預設即為public static final型別。
7. 乙個類可以實現多個介面,但只能繼承乙個抽象類。
Java介面和抽象類區別
abstract class inte ce 繼承性單繼承 多實現方法 抽象方法 具體方法 抽象方法 filed 宣告 使用filed欄位 建立的為靜態常量 final static 訪問許可權 public protected private或package public 構造器有 無介面特點 a...
Java 介面和抽象類的區別
1 抽象類可以有構造方法 介面不可以有構造方法 2 抽象類可以有普通成員變數 介面不可以有普通成員變數 3 抽象類可以包含普通非抽象的方法 介面中所有方法都必須是抽象的,不能有非抽象的普通方法 4 抽象類下的抽象方法訪問型別可以是public protected 但介面的訪問型別必須是public,...
java介面和抽象類的區別
抽象類和介面的區別?1 成員區別 抽象類 成員變數 可以是變數,也可以是常量 成員方法 可以抽象,也可以非抽象 建構函式 有 介面 成員變數 只能是常量 成員方法 只可以抽象 建構函式 沒有建構函式 2 關係區別 類與類 繼承,單繼承 類與介面 實現,單實現,多實現 介面與介面 繼承,單繼承,多繼承...