簡單的做個關於抽象類和介面的總結吧:
區別1:抽象類體現繼承關係,乙個類只能単繼承。介面體現實現關係,乙個類可以多實現。
區別2:抽象類中可以定義非抽象方法和抽象方法,子類繼承後可以直接使用非抽象方法。介面的方法都 是抽象的,必須由子類去實現。介面中的成員都有固定的修飾符。
區別3:抽象類有構造方法,用於給子類物件初始化。而介面沒有構造方法。
特點1:抽象類不可以例項化,即不能用new建立物件。抽象類必須由其子類覆蓋了所有的抽象方法後, 該子類才可以例項化,否則,這個子類也是抽象類。
特點2:抽象類abstract關鍵字不能和哪些關鍵字共存:
特點3:介面中宣告變數必須是final、public 、static的,介面中定義的方法都是abstract、 public的。介面裡的資料成員必須初始化,且全是常量,不是變數。
特點4:介面是抽象類的變體(你沒看錯),介面也可以通過關鍵字extends來繼承其他接 口。格式如下所示:
class 類名稱 implements 介面a,介面b
inte***ce 子介面名稱 extends 父介面1,父介面2,...{}
紅色字型是概念。括號中的文字都是我的想法,就是抽象類和介面的應用性,如何應用!
抽象類:abstract
抽象類可以有抽象方法也可以有普通方法。
但是有抽象方法的類必須是抽象類。
繼承抽象類,必須實現抽象類中所用的抽象方法,不然把該類也變成抽象類。
(抽象類是從下而上的,因為必須先知道有狗,貓這兩個類,才會建立乙個抽象類,讓他們繼承。抽象類是實現行為)
介面: inte***ce
所用的方法都是抽象方法。
變數都是靜態常量。
(介面是從上而下的,因為當時建立介面的時候你並不需要知道誰使用。就好像有乙個飛的介面,不止小鳥類能實現,飛機 也能實現。介面是定義行為)
介面和抽象類的區別:
抽象類是單繼承的,是乙個類。
介面可以多現實,介面也繼承多個介面。是乙個介面
介面是乙個特殊的抽象類。
(抽象類是單繼承,既然是個類,物件導向的概念就是乙個模板,所以沒有更好的延伸性。
假如有乙個門的抽象類,那門肯定是擁有開門和關門的方法。
如果這個門需要乙個指紋系統開門呢,開門需要乙個報警系統呢,還有自動門。門肯定就是門,只需要例項的時候確實是 個門就可以了。
那這個時候就可以實現介面,因為介面不需要這種完全依賴關係,只要能用就可以實現
自動門實現紅外線自動識別功能的介面、需要指紋識別的門也只需要實現指紋識別的這個介面。
只要你能想得到,是可以實現多個介面。
抽象類是要實現的行為,因為必然會有子類要繼承,實現抽象方法,所以肯定是先知道子類,才會建立抽象類,所以是從 下而上
介面是定義行為,介面定義的行為是因為以後會出現很多個類要擁有這個功能才建立的,所以是從上而下)
含有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 final型別,並且預設為public static final型別。
7,抽象類中可以有普通成員變數,而介面中不能有普通成員變數。
再補充點兩者在應用上的區別:
介面更多的是在系統框架設計方法發揮作用,主要定義模組之間的通訊,而抽象類在**實現方面發揮作用,可以實現**的重用。
介面和抽象類
介面和抽象類 今天自學了一下介面,從第一次接觸介面又進一步理解介面的原理。想到介面或許我們更多的是想到和類的對比,而類中抽象類和介面又更為相似。現在我講下我對介面和抽象類的理解。如果單從具體 來看,對這兩個概念很容易模糊,甚至覺得介面就是多餘的,因為單從具體功能來看,除多重繼承外 c 抽象類似乎完全...
抽象類和介面
抽象類 1.是一種特殊的類,除了不能被例項化外,具有類得其他特性.2.抽象類的方法可以不宣告為abstract,此時可以實現方法提 如果宣告為abstract,則不可以實現方法體,只能宣告,如 public abstract int remove int i,int j 此時類必須宣告為抽象 3.乙...
抽象類和介面
1.抽象類 含有abstract修飾符的類即為抽象類。可用於實現 重用。抽象類與普通類的唯一區別 不能建立例項物件 允許有抽象方法,但不必須是抽象的。抽象類中定義的抽象方法必須在具體子類中實現,所以不能有抽象構造方法或抽象靜態方法 如果沒有全部實現抽象父類的抽象方法,子類也要定義為抽象型別。2.介面...