抽象類和介面的比較

2021-05-17 16:17:44 字數 1364 閱讀 7354

1.

抽象類:是一種特殊的類,具有以下特點: a)

抽象方法只作宣告,而不包括實現,可以是看成沒有實現體的虛方法。 b)

抽象類不能被例項化,除此之外,具有類的其他特性。 c)

抽象類可以但不是不惜具有抽象方法和抽象方法,但是一旦有了抽象方法,就一定要把這個類宣告為抽象類。 d)

具體派生類必須覆蓋抽象類的抽象方法。 e)

抽象類可以派生自另外乙個抽象類,可以覆蓋基類的抽象方法也可以不覆蓋,如果不覆蓋,則其派生類必須覆蓋它們。 2.

介面:介面是引用型別,類似於抽象但是又不是抽象,具體有以下特點: a)

不能被例項化。 b)

只能包含實現的方法宣告。 c)

成員可以有方法,屬性,索引器和事件。 d)

介面不能包含常量,字段(域),建構函式,析構函式或靜態成員。 e)

介面中所有成員都是預設

public

的,因此介面中不能有

private

成員。

f)派生類必須實現介面的所有成員。 g)

乙個類可以實現繼承多個介面,各個介面之間通過逗號隔開。 3.

抽象類和介面的相同點 a)

都可以被繼承。 b)

都不能被例項化。 c)

都可以包含方法宣告。 d)

派生類必須實現未實現的方法。 4.

抽象類和介面的區別 a)

抽象類是乙個不完整的類,需要進一步細化,而介面是乙個行為的規範。(微軟的介面後帶

—able

字段,證明是一類「我能做。。。。」 b)

抽象類可以包含字段,屬性,方法,事件,索引器。而介面不能包含字段。 c)

抽象類更多的定義是在一系列緊密相關的類之間,而介面大多數是定義在關係疏鬆但都實現某一功能的類中。 d)

介面不具備繼承的任何具體特點,僅僅承諾了能夠呼叫的方法。 e)

介面可以被多成實現,而抽象類只能單一繼承。 f)

介面可以支援**,但是抽象類不支援。 g)

抽象類不能被密封。 h)

抽象類中的方法預設是虛的,但是實現介面的介面方法中卻預設為非虛的,當然也可以宣告為虛的。 5.

抽象類和介面的使用 a)

抽象類主要使用者關係密切的物件;而介面用於不相干的類提供通用功能。 b)

如果設計大的功能單元,則使用抽象類;如果要在元件的所有實現間提供通用的實現功能,則使用抽象類。 c)

如果建立的功能將在大範圍的全異物件間使用,則使用介面。如果設計小而簡練的功能類,則使用介面。 d)

如果預計要建立元件的多個版本,則建立抽象類。抽象類提供簡單的方法來控制項版本。 e)

好的介面應該是具有專一功能的,而不是多功能的,否則會造成介面汙染。

盡量避免使用繼承來實現組建功能,而是使用黑箱復用,物件組合。

抽象類和介面的比較

包含乙個抽象方法的類必須是抽象類 抽象類和抽象方法都要使用abstract關鍵字宣告 抽象方法只需要宣告而不需要實現 抽象類必須被繼承,子類 如果不是抽象類 必須覆寫抽象類中的全部抽象方法 注意 抽象方法不要用private宣告,如果使用private宣告,子類將無法覆寫 ps 抽象類允許構造方法,...

抽象類和介面的比較

介面和抽象類是非常相似的,但是他們之間是有區別的,主要區別一下幾個方面 1 乙個類可以實現眾多個介面,但是只能繼承乙個抽象類,可以說介面是取消程式語言中的多繼承機制的乙個衍生物,但是不完全如此 2 抽象類可以有非抽象方法,既可以有已經實現的方法,繼承他的子類可以對方法進行覆寫 而介面中定義的餓方法必...

抽象類和介面的比較

因為乙個類只能有乙個父類,所以提出介面,可以為一些小眾的共性作出補充。區別 1.介面可以多重繼承 繼承多個介面 類不可以多重繼承 類可以實現多個介面,但類只能繼承乙個類。2.抽象類成員變數型別不限,介面中的成員變數只能是public static final的 且必須顯式初始化 3.抽象類可以定義非...