国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 幫助中心 > 正文

C#接口(Interface)用法分析

2024-07-09 22:41:41
字體:
來源:轉載
供稿:網友

本文實例分析了C#接口(Interface)用法。分享給大家供大家參考。具體分析如下:

繼承"基類"跟繼承"接口"都能實現某些相同的功能,但有些接口能夠完成的功能是只用基類無法實現的

1.接口用于描述一組類的公共方法/公共屬性. 它不實現任何的方法或屬性,只是告訴繼承它的類至少要實現哪些功能,繼承它的類可以增加自己的方法.

2.使用接口可以使繼承它的類: 命名統一/規范,易于維護.比如: 兩個類 "狗"和"貓",如果它們都繼承了接口"動物",其中動物里面有個方法Behavior(),那么狗和貓必須得實現Behavior()方法,

并且都命名為Behavior這樣就不會出現命名太雜亂的現象.如果命名不是Behavior(),接口會約束即不按接口約束命名編譯不會通過.

3.提供永遠的接口。 當類增加時,現有接口方法能夠滿足繼承類中的大多數方法,沒必要重新給新類設計一組方法,也節省了代碼,提高了開發效率.

舉個代碼示例:

//公共接口: "動物"public Interface IAnimal{int EyeNumber;private void Behavior();//行為方法,描述各種動物的特性}//類: 狗public Dog : IAnimal{string ActiveTime = "白天";private void Behavior(){{Console.Write("我晚上睡覺,白天活動");}}//類: 貓public Cat: IAnimal{string ActiveTime = "夜晚";private void Behavior(){ {Console.Write("我白天睡覺,晚上活動");}}//簡單的應用:public static Main(){Dog myDog = new Dog();myDog.Behavior(); //輸出: "我晚上睡覺,白天活動"Cat myCat = new Cat();myCat.Behavior(); //輸出: "我白天睡覺,晚上活動"}

以上調用不同的類的相同名方法,會輸出不同的東東,也就是說每個類里面的同名方法完成的功能可以是完全不同的.

更進一步,不是用上面Main方法這樣一個一個調用類的方法,用多態性實現其調用.
看一下下面這個方法:

public Behavior(IAnimal myIanimal){myIanimal.Behavior();}

其參數是<<接口類型>>,任何繼承它的類都可以調用此方法,此方法能根據類的不同調用不同的類中的方法. 也即能夠自己根據不同的類,完成不同的類的功能.

多態性代碼示例:

Dog myDog = new Dog();Cat myCat = new Cat();Behavior(myDog); //Behavior接受“狗”類實例Behavior(myCat); //Behavior接受“狗”類實例

這樣Behavior方法寫一次就能完成所有繼承它的類中的相同名方法的不同功能. 非常方便,同樣,由于“動物軟件”功能需求,需要再增加一個"龜"類:

//類: 龜public Tortoise: IAnimal{string ActiveTime = "很難說";private void Behavior(){{Console.Write("我可以不活動,一睡就睡五千年!");}}

那么也可以調用上面多態方法,所以說接口使方法具有較好擴展性.
如果繼承它的類很多的話,有多少好處是可想而知的!

另外, 也有抽象類能夠實現但接口不能實現的情況:

1. 在抽象類中可以加代碼邏輯,但接口不能.

2. 如果要在接口中增加一個方法, 所有實現它的類都強制重載一遍此方法, 如果重載類很多時, 會增大工作量.

總之, 一般在僅實現單繼承用途時, 盡量用抽象類, 功能也更強些!

希望本文所述對大家的C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 修水县| 双流县| 赫章县| 高尔夫| 庄河市| 长岭县| 尼玛县| 安化县| 高平市| 获嘉县| 广饶县| 玉门市| 阳高县| 长垣县| 海林市| 建平县| 当涂县| 航空| 汾阳市| 汨罗市| 镇宁| 获嘉县| 梁河县| 海盐县| 嘉黎县| 台东县| 甘南县| 中牟县| 梁平县| 舟曲县| 高雄市| 赤峰市| 乌拉特中旗| 原阳县| 阿拉善左旗| 包头市| 海伦市| 利津县| 荔浦县| 汉沽区| 即墨市|