含有abstract修飾符的class 即為抽象類,abstract類不能建立例項物件,含有abstract的方法的類必須定義為abstract class ,abstract class 裡的方法不必是抽象的,抽象來中定義抽象方法必須放在具體子類中實現,所以呀,不能有抽象的構造方法或抽象的靜態方法,如果子類沒有實現抽象父類中的所有 方法,那麼,子類也必須定義為抽象類。
介面(inte***ce)可以說成是抽象類的特例。介面中的所有方法都必須是抽象的,介面中的方法定義預設為public abstract 。介面中的變數是全域性常量,即public static final修飾的。
看一下他們在語法上的區別吧!
1,抽象類裡可以有構造方法,而介面內不能有構造方法。
2,抽象類中可以有普通成員變數,而介面中不能有普通成員變數。
3,抽象類中可以包含非抽象的普通方法,而介面中所有的方法必須是抽象的,不能有非抽象的普通方法。
4,抽象類中的抽象方法的訪問型別可以是public ,protected和預設型別,但介面中的抽象方法只能是public型別的,並且預設即為public abstract型別。
5,抽象類中可以包含靜態方法,介面內不能包含靜態方法。
6,抽象類和介面中都可以包含靜態成員變數,抽象類中的靜態成員變數的訪問型別可以任意,但介面中定義的變數只能是public static型別,並且預設為public static型別。
7,乙個類可以實現多個介面,但只能繼承乙個抽象類。
再補充點兩者在應用上的區別:
介面更多的是在系統框架設計方法發揮作用,主要定義模組之間的通訊,而抽象類在**實現方面發揮作用,可以實現**的重用
java 抽象類和介面的區別
從語法層面上講 抽象類 1 抽象類的使用的關鍵字是abstract 2 抽象類類中能夠直接在抽象類中直接實現非抽象方法相關的預設方法的實現 3 抽象類中可以定義變數 4 再抽象類中成員中可以使用 public private protected許可權修飾 5 抽象類中可以定義自己的成員變數屬性 介面...
Java 抽象類和介面的區別
一 抽象類 包含抽象方法的類稱為抽象類,可以擁有成員變數和 普通的成員方法。與普通類的區別 1.抽象方法必須為public或者protected 因為如果為private,則不能被子類繼承,子類便無法實現該方法 預設情況下預設為public。2.抽象類不能用來建立物件 3.如果乙個類繼承於乙個抽象類...
java抽象類和介面的區別
抽象類 1 抽象方法必須為public或者protected 因為如果為private,則不能被子類繼承,子類便無法實現該方法 預設情況下預設為public。2 抽象類不能用來建立物件 3 如果乙個類繼承於乙個抽象類,則子類必須實現父類的抽象方法。如果子類沒有實現父類的抽象方法,則必須將子類也定義為...