含有abstract修飾符的class 即為抽象類,abstract類不能建立執行個體對象,含有abstract的方法的類必須定義為abstract class ,abstract class 裡的方法不必是抽象的,抽象類中定義抽象方法必須放在具體子類中實作,是以呀,不能有抽象的構造方法或抽象的靜态方法,如果子類沒有實作抽象父類中的所有 方法,那麼,子類也必須定義為抽象類。
接口(interface)可以說成是抽象類的特例。接口中的所有方法都必須是抽象的,接口中的方法定義預設為public abstract 。接口中的變量是全局常量,即public static final修飾的。 看一下他們在文法上的差別吧!
1,抽象類裡可以有構造方法,而接口内不能有構造方法。
2,抽象類中可以有普通成員變量,而接口中不能有普通成員變量。
3,抽象類中可以包含非抽象的普通方法,而接口中所有的方法必須是抽象的,不能有非抽象的普通方法。
4,抽象類中的抽象方法的通路類型可以是public ,protected和預設類型,但接口中的抽象方法隻能是public類型的,并且預設即為public abstract類型。
5,抽象類中可以包含靜态方法,接口内不能包含靜态方法。
6,抽象類和接口中都可以包含靜态成員變量,抽象類中的靜态成員變量的通路類型可以任意,但接口中定義的變量隻能是public static類型,并且預設為public static類型。
7,一個類可以實作多個接口,但隻能繼承一個抽象類。再補充點兩者在應用上的差別: 接口更多的是在系統架構設計方法發揮作用,主要定義子產品之間的通信,而抽象類在代碼實作方面發揮作用,可以實作代碼的重用