介面可以看做是乙個標準, 所有繼承的子類需要按照介面中宣告的方法來
介面用關鍵字 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...