C 中介面和抽象類的區別

2021-10-07 08:35:40 字數 1194 閱讀 7828

直通車:c#介面(inte***ce)c#抽象類

二、兩者的使用場景

兩者都不能直接例項化

兩者都包含未實現的方法宣告

派生類必須實現未實現的方法,抽象類是抽象方法,介面是所有成員(不僅是方法還包括其他成員)

區別型別

介面抽象類

定義使用inte***ce關鍵字定義

使用abstract關鍵字定義

成員在介面中僅能定義成員,但不能有具體的實現

抽象類除了抽象成員以外,其他成員允許有具體的實現

成員變數

介面中定義的變數只能是公共的靜態的常量(public static final)

抽象類中的變數是普通變數

宣告在介面中不能宣告字段,並且不能宣告任何私有成員,成員不能包含任何修飾符

在抽象類中能宣告任意成員,並能使用任何修飾符來修飾

繼承介面能使用類或者結構體來繼承,乙個介面可以繼承多個介面,但是介面不能繼承類

抽象類僅能使用類繼承,也就是說不能通過介面繼承,在類繼承介面的同時還可以繼承其他類,乙個類只能繼承乙個父類

實現在使用類來實現介面時,必須隱式或顯式地實現介面中的所有成員,否則需要將實現類定義為抽象類,並將介面中未實現的成員以抽象的方式實現

在使用類來繼承抽象類時,必須將抽象類中所有抽象成員實現,如果沒有將抽象成員全部實現,則必須將這個實現類定義為抽象類

實現方法

直接實現

使用override關鍵字實現抽象方法

抽象級別高低

使用場景

介面是適合為不相關的類提供通用功能

抽象類主要用於關係密切的物件

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

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

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

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

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

抽象方法 抽象類 介面 介面和抽象類的區別

某個父類只知道子類因該包含什麼樣的方法,無法知道這些子類如何實現這些方法。抽象類包含該方法但沒有對該方法的具體實現。有抽象方法的類只能被定義為抽象類,抽象類裡可以沒有抽象方法。抽象方法和抽象類的規則 public abstract class shape private string color p...

c 介面和抽象類的區別

一 抽象類 抽象類是特殊的類,只是不能被例項化 除此以外,具有類的其他特性 重要的是抽象類可以包括抽象方法,這是普通類所不能的。抽象方法只能宣告於抽象類中,且不包含任何實現,派生類必須覆蓋它們。另外,抽象類可以派生自乙個抽象類,可以覆蓋基類的抽象方法也可以不覆蓋,如果不覆蓋,則其派生類必須覆蓋它們。...

c 介面和抽象類的區別

一 抽象類 抽象類是特殊的類,只是不能被例項化 除此以外,具有類的其他特性 重要的是抽象類可以包括抽象方法,這是普通類所不能的。抽象方法只能宣告於抽象類中,且不包含任何實現,派生類必須覆蓋它們。另外,抽象類可以派生自乙個抽象類,可以覆蓋基類的抽象方法也可以不覆蓋,如果不覆蓋,則其派生類必須覆蓋它們。...