介面 Csharp多型的實現

2021-09-29 02:49:55 字數 1854 閱讀 9010

介面可以看做是乙個標準, 所有繼承的子類需要按照介面中宣告的方法來

介面用關鍵字 inte***ce 修飾,介面的名字一般是i…able ,表示我有什麼能力

介面一般是在命名空間下的,也就是說跟類是在同一級別的 (介面也可以放在類裡面,但是沒有什麼意義,因為可以把介面看做是乙個特殊的類,類是解決方法,介面也是,所以放在裡面沒什麼屌意思)

介面裡面的方法,屬性不能用public,private等修飾

介面裡面的方法不實現,只宣告,真正的實現是在繼承的子類中實現

介面裡面只能放屬性,方法,索引,事件,不能放欄位

介面用於規範,抽象類用於共性。抽象類是類,所以只能被單繼承,但是介面卻可以一次實現多個。

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

抽象類可以提供某些方法的部分實現,介面不可以。抽象類的例項是它的子類給出的。介面的例項是實現介面的類給出的。

在抽象類中加入乙個方法,那麼它的子類就同時有了這個方法。而在介面中加入新的方法,那麼實現它的類就要重新編寫(這就是為什麼說介面是乙個類的規範了)。

介面成員被定義為公共的,但抽象類的成員也可以是私有的、受保護的、內部的或受保護的內部成員(其中受保護的內部成員只能在應用程式的**或派生類中訪問)。

此外介面不能包含字段、建構函式、析構函式、靜態成員或常量。

還有一點,我們在vs中實現介面時會發現有2個選項,乙個是實現介面,乙個是顯示實現介面。實現介面就是我們平常理解的實現介面,而顯示實現介面的話,實現的方法是屬於介面的,而不是屬於實現類的。顯示實現的介面方法只能通過介面的引用訪問,通過類成員無法訪問,除非將this強制轉成介面的引用後再訪問實現的介面方法。((iinte***ce)this).顯示實現的介面方法。

//首先在命名空間下面宣告乙個介面

inte***ce

ianimalable

}inte***ce

ipersonable

//乙個介面可以同時繼承多個介面

inte***ce

istudentable

:ianimalable

,ipersonable

//在命名空間下面定義乙個鸚鵡類,繼承與介面

class

parrot

:ianimalable

set}

//下面是顯式介面的呼叫方法,用下面的格式寫方法體

// 返回值 介面名.函式名();

void ianimalable.say ()"

, name);}

}//在命名空間下面定義乙個狗類,繼承與介面

class

dog:

ianimalable

set}

public

void

say()"

, _name)

;}

定義乙個介面變數,比如說 ianimalable animal = new parrot(); animal = new dog();

這裡可以看到,介面就像乙個特殊的類, 介面不是被例項化,但是可以通過子類間接例項化

2.1 當繼承介面的子類中的方法名和介面中的方法名一樣的話,這就需要用到顯示介面,這個在**中可以看到具體的使用方法

2.2 乙個介面可以被多個介面或者多個類繼承, 乙個介面可以同時繼承多個介面繼承, 但是乙個類不能同時繼承多個類, 乙個介面可以同時繼承類和介面, 但是介面一定要在後面

2.3 animal先裝的是鸚鵡類,animal後來裝的是狗類,裝那個類,就表現出那個類的特徵

2.4 這樣介面就表現了不同的形態,可以是狗類,可以是鸚鵡類等等, 就實現了多型

c#中介面、介面與類的比較、類與成員修飾符

介面實現多型

由於繼承有單根性這乙個特點,也就是說乙個類只能繼承與乙個父類,但是有時候我們需要繼承多個類,那莪這樣就有了介面的出現,介面實現讓乙個類可以繼承多個類,繼承的多個類實際上就是繼承的介面 介面使用inte ce關鍵字來表示乙個類是乙個幾介面 介面的特點 1 介面中的成員不能有任何實現 光說不做 只是定義...

C 中的介面實現多型

我們都知道虛方法實現多型,抽象方法實現多型等,我們今天來看看如何使用介面實現多型 1.首先我們先要來了解了解什麼是介面,它存在的意識 01.介面就是為了約束方法的格式 引數和返回值型別 而存在的 02.介面可以實現多繼承,彌補單繼承的缺陷。03.介面可以看成是乙個特殊的抽象類,通過反編譯看原始碼可知...

C 多型實現之介面

1 什麼是介面?介面就是一種規範,協議 約定好遵守某種規範就可以寫通用的 定義了一組具有各種功能的方法。只是一種能力,沒有具體實現,像抽象方法一樣,光說不做 2 介面存在的意義 多型。多型的意義 程式可擴充套件性。最終 節省成本,提高效率。示例1 控制台應用程式中新建 iflyable ianima...