C 抽象類和介面的異同

2021-10-14 05:48:58 字數 744 閱讀 7244

都可以被繼承

都不能被例項化

都可以包含方法宣告

區別:抽象基類可以定義字段,屬性,方法實現,建構函式。介面只能定義屬性,索引器,事件,方法宣告

抽象類是乙個不完整的類,需要進一步細化,而介面試試乙個行為規範

介面可以被多重繼承,抽象類只能被單一繼承

抽象類實現的具體方法預設為虛的,但實現介面的類中的介面方法預設為非虛的,不過你也可以宣告為虛的

抽象類是從一系列具有相同的實物抽象出來的抽象概念(抽象類),具有緊密相關的關係,而介面大多數只是為了實現某乙個功能

抽象類是從一系列相關物件中抽象出來的概念,因此反映的是事物的內部共性,而介面是為了滿足外部呼叫而定義的乙個功能的約定,因此反映的是實物的外部特性

使用區別:

1、抽象類主要用於關係密切的物件,而介面最適合為不相關的類提供通用功能

2、如果要設計大的功能單元,則使用抽象類;如果要設計小而簡練的功能塊,則使用介面。

3、如果預計要建立元件的多個版本,則建立抽象類。介面一旦建立就不能更改。如果需要介面的新版本,必須建立乙個全新的介面。 4、如果建立的功能將在大範圍的全異物件間使用,則使用介面;如果要在元件的所有實現間提供通用的已實現功能,則使用抽象類。 5、分析物件,提煉內部共性形成抽象類,用以表示物件本質,即「是什麼」。為外部提供呼叫或功能需要擴充時優先使用介面

6、好的介面定義應該是具有專一功能性的,而不是多功能的,否則造成介面汙染。如果乙個類只是實現了這個介面的中乙個功能,而不得不去實現介面中的其他方法,就叫介面汙染

抽象類和介面的異同

抽象類 有抽象方法的類必須定義成抽象類,抽象類可以沒有抽象方法 抽象類和介面的相同點 1.代表系統的抽象層,都不能例項化,都能包含抽象方法 用於描述系統提供的服務,不必提供具體實現 2.都可以指向子類 實現類 物件 不同點 1.構造方法 抽象類可以有構造方法,介面中不能有構造方法 2.變數 1 普通...

抽象類和介面的異同

抽象類 使用abstract關鍵字宣告 抽象方法不能是private 抽象類不能直接例項化,其實例可以使用子類向上轉型的方式獲得 子類如果沒有重寫全部抽象方法則仍是抽象類 子類只能extends乙個類 介面 抽象方法的集合,以inte ce關鍵字宣告,子類可以使用implements繼承多個介面 子...

抽象類和介面的異同

1 不能例項化 2 如果繼承某個抽象類或者實現某個介面,需要實現所有的抽象方法,否則該類仍是抽象來。抽象類 1 成員變數 變數和常量都可以 2 成員方法 抽象方法和非抽象方法都可以 3 構造方法 可以有 接 口 1 成員變數 只可以是常量 2 成員方法 只可以是抽象方法 3 構造方法 不允許有,禁止...