對比抽象類和介面

2021-07-04 13:25:34 字數 830 閱讀 7004

(1)abstract關鍵字只能修飾類和方法,不能修飾字段。

(2)抽象類不能被例項化(通俗點講,不能被new),只能被繼承。

(3)抽象類可以包含屬性,方法,構造方法,初始化塊,內部類,列舉類,和普通類一樣,普通方法一定要實現,變數可以初始化或不初始化,但是不能初始化後再在抽象類中重新賦值或操作該變數(只能在子類中改變該變數)

(4)抽象類中抽象方法不能實現。

(5)含有抽象方法的類必須抽定義成抽象類。

(1)介面的成員常量和方法都必須是公開的(public),確保能被外部訪問。

(2)介面中的方法都必須是抽象方法。

(3)介面不涉及和任何具體例項相關的細節,因此介面沒有構造方法,不能被例項化,沒有例項變數,只有靜態(static)變數。

(4)介面中的變數是所有實現類共有的,所以不能變,只能是不可變(final)型別,也就是常量了。

(5)介面方法修飾預設是public abstract,介面變數預設修飾是public static final常量,且必須初始化。

注意:final和abstract不能同時出現

(1)介面是公開的,裡面不能有私有的方法或變數,而抽象類是可以有私有方法或私有變數的。

(2)設計理念不同,抽象類表示「is-a」(是乙個)關係,介面表示「has-a」(有乙個)關係。

(3)實現介面必須實現介面定義的所有方法,而繼承抽象類可以有選擇地重寫需要用到的方法。

(4)介面不能有實現方法,而抽象類可以有實現方法。

(5)介面中的變數(即常量)不能重新定義,抽象類中的變數預設是friendly型(包可見),其值可以在子類中重新定義。

(6)可以實現多個介面,但只能繼承乙個抽象類。

介面和抽象類的對比

相同點 1 都是抽象型別。2 都可以有實現方法 3 都可以不需要實現類或者繼承者去實現所有方法。4 抽象類和介面都不能直接例項化,如果要例項化,抽象類變數必須指向實現所有抽象方法的子類物件,介面變數必須指向實現所有介面方法的類物件。5 抽象類裡的抽象方法必須全部被子類所實現,如果子類不能全部實現父類...

抽象類和介面的關係對比

抽象類 抽象類主要用來定義一些抽象的屬性和方法,留待子類根據自己的情況實現這些屬性和方法 抽象類不能生成例項,即不能new乙個抽象類的例項 抽象類可以被繼承,除非繼承該抽象類的子類仍宣告為抽象的,否則就必須實現這個抽象類的所有抽象屬性和方法 乙個類只能繼承乙個抽象類,如果需要實現多個類的抽象方法,必...

抽象類與介面(概念,對比)

1.介面 今天是星期日,我們沒有上課。而我也沒有閒著,複習一下昨天學的抽象類和介面,首先說一下介面,介面的概念是可屬於任何類或結構的一組相關功能所以實現介面的類或結構必須實現介面定義中指定的介面成員。介面使用inter face 關鍵字進行定義,可由方法,屬性,事件。索引器或這四種成員型別的任意組合...