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

2021-06-27 12:10:03 字數 1301 閱讀 7072

1.介面

今天是星期日,我們沒有上課。而我也沒有閒著,複習一下昨天學的抽象類和介面,首先說一下介面,介面的概念是可屬於任何類或結構的一組相關功能所以實現介面的類或結構必須實現介面定義中指定的介面成員。

介面使用inter face

關鍵字進行定義,可由方法,屬性,事件。索引器或這四種成員型別的任意組合構成。

特性:介面類似於抽象基類,不能直接例項化介面,介面中的方法都是抽象方法,實現介面的任何非抽象型別都必須實現介面的所有成員。介面不能包含常量,字段,運算子,例項建構函式,析構函式或型別,不能包含靜態成員。介面成員自動公開的,且不能包含任何訪問修飾符。介面自身可以多個介面繼承,類和結構可繼承多個介面,但介面不能繼承類。

例如:inte***ce iprogram

void  fun();

//顯示實現介面成員。

void iprogram.fun(){

console.writeline(「i am fun」);

static void main(string args){

iprogram p=new iprogram(); //宣告乙個介面例項,但不是對介面例項

p.fun();

console .readkey();

2.優缺點

實現介面顯式和隱式實現。一般情況,當類或者結構要實現單個介面,可以使用隱式實現。如果類或者結構繼承多個介面且介面中具有相同名稱成員時,就要用到顯式實現,隱式方法實現方式就失敗了。

介面的繼承和類繼承不同,首先,類繼承不僅是說明繼承,而且也是實現繼承;而介面繼承只是說明繼承。

派生類可以繼承基類的方法實現,而派生的介面只繼承了父介面的成員方法說明,而沒有繼承父介面的實現。

介面的覆蓋:由於介面實現沒有方法體,抽象方法也沒有方法體,那麼當我們在介面實現方法功能。

宣告:此篇文件時來自於

【狗刨學習網】

社群-unity極致學院

3.區別

介面中只能宣告方法,屬性,事件,索引器。而抽象類中可以有方法的實現也可以定義非靜態的類變數。

抽象類是類,所以只能被單繼承,但是介面卻可以一次實現多個。抽象類可以提供某些方法的部分實現,介面不可以。抽象類的例項是它的子類給出的,介面的例項介面的類給出的。抽象類的例項是它的子類給出的,介面的例項介面的類給出的。在抽象類中加入乙個方法,那麼實現它的類就要重新編寫(這就是為介面是乙個類的規範了。)

介面成員被定義為公共的,但抽象類的成員也可以是私有的,受保護的,內部的或受保護的內部成員。此外介面不能包含字段,建構函式,析構函式,靜態成員和變數。

介面與抽象類的對比

介面與抽象類的對比 定義 抽象類 無法具體描述事物時,使用抽象類。介面 擴充套件功能。定義格式 抽象類 abstract class 類名a 介面 inte ce 介面名b 使用場景 抽象類 主要用來抽象類別。介面 主要用來抽象功能。比如 子類除了需要重寫父類的abstract方法,還需要從父類繼承...

對比抽象類和介面

1 abstract關鍵字只能修飾類和方法,不能修飾字段。2 抽象類不能被例項化 通俗點講,不能被new 只能被繼承。3 抽象類可以包含屬性,方法,構造方法,初始化塊,內部類,列舉類,和普通類一樣,普通方法一定要實現,變數可以初始化或不初始化,但是不能初始化後再在抽象類中重新賦值或操作該變數 只能在...

對比介面 抽象類的區別

介面 抽象類在介面中僅能定義成員,但 不能有具體的實現。抽象類除了抽象成員以外,其他成員允許有具體的實現 在介面中不能宣告字段,並且不能宣告任何私有成員,成員不能包含任何修飾符。在抽象類中能宣告任意成員,並能使用任何修飾符來修飾。介面能使用 類或者結構體 來繼承。抽象類僅能使用類繼承。在使用類來實現...