日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

c#中的接口的定議以及接口與抽象类的區別

發布時間:2023/12/13 C# 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c#中的接口的定議以及接口與抽象类的區別 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

c#中的接口?

目錄

?? 接口的定義

?? 接口與抽象類

?? 接口的的實現

接口的的多態性

一.接口的定義

定義:定義一個協定。實現接口的類或結構必須遵守其協定。

簡單的說就是接口或者類之間交互時遵守的一個顯示定義。最初接觸“類與類之間通過接口交互”這個概念時,誤以為接口就是類公開的方法,類之間通過類的方法進行交互。其實接口是獨立于類的一個定義。接口定義類之間交互的標準。

那么類與類之間直接交互就好了,為什么還要使用接口呢?

這主要是因為:接口是類之間交互內容的一個抽象,把類之間需要交互的內容抽象出來定義成接口,可以更好的控制類之間的邏輯交互。可見接口內容的抽象好壞關系到整個程序的邏輯質量;另外可以在任何時候通過開發附加接口和實現來添加新的功能;

關于接口一個很重要的概念:接口只包含成員定義,不包含成員的實現,成員的實現需要在繼承的類或者結構中實現。

接口的成員包括:方法,特性,索引器,事件。

注意:接口不包含字段。

實現接口的類必須嚴格按其定義來實現接口的每個方面

????? 接口本身一旦被發布就不能再更改,對已發布的接口進行更改會破壞現有的代碼。

一個典型的接口示例:?????????

using?System;

using?System.Colletion;

public?delegate?voic?Chang(object??sender,object?event)//定義一個委托

public?interface?Ibroker??//定義一個股票經濟人接口

{

??
string?GetRating?(string?stock);//一個獲得金額的方法(此處沒有實現)

??
decimal?pricePerTrade????//定義一個設置每股價格的特性

??{

get;????????????????//沒有實現的

set;

}

decimal?this(string?StockName)????//定義索引器

{

??
get;

??
set;

}?

event?Change?pricechange;???//定義接口的事件

}

?

二.接口與抽象類

?? 抽象類和接口在定義上和功能上有很多相似的地方,具體在程序中使用抽象類還是接口需要比較抽象類和接口的具體差別。

抽象類:一種不能實例化而必須從中繼承的類,抽象類可以提供實現,也可以不提供實現

??????? 子類只能從一個抽象類繼承

?????? 抽象類應主要用于關系密切的對象

?????? 如果要設計大的功能單元,則使用抽象類。

?????? 如果預計要創建組件的多個版本,則創建抽象類

?

接口:是完全抽象的成員集合,不提供認識實現。

類或者結構可以繼承幾個接口。

接口最適合為不相關的類提供通用功能

如果要設計小而簡練的功能塊,則使用接口

接口一旦創建就不能更改。如果需要接口的新版本,必須創建一個全新的接口

三.接口的的實現

?? 接口的實現分為:隱式實現和顯式實現。如果類或者結構要實現的是單個接口,可以使用隱式實現,如果類或者結構繼承了多個接口那么接口中相同名稱成員就要顯示實現。顯示實現是通過使用接口的完全限定名來實現接口成員的。

針對上面的例子 我們可以這樣實現接口:

public?class?testInterface:?Ibroker??//定義一個繼承ibroker接口的類

{

??hashtable?hash
=new?hashtable();

??
decimal?pricepertrade;

??
public?testInterface(decimal?price)???//?構造函數

??{

????pricepertrade
=price?;?????????????//初始化字符串

}

public?string??Getrating?(string?stock)?????//隱式實現接口的方法

{

???
return?“buy”;

}

public?decimal?Ibroker.pricepertrade?//??顯式實現接口的特性

{

??
get?

{

??
return?pricepertrade;

}

set?

{

??pricepertrade
=value;

pricechange(“Finacebroker”,value);

}

?

public?decimal?this(string?stockName)

{

??
get?

{

??
return?(decimal)Hash[stockName];

}

set?

?{

???hash.add(stockname,value);

}

}

}

public?event?changer?pricechange;//接口中的所有成員都要實現

}

四.接口中的多態

?多個類繼承了相同的接口就實現了接口的多態性,接口的多態性的訪問和類的多態性訪問一樣。下面的例子說明怎么實現接口的多態性訪問:

?

public?class?InterfaceTester

{

??
public?stratic?int?Main?(string[]?args)

??{

string?recommendation;

Arraylist?Brokers
=new?Arraylist;//定義一個列表

Brokers.add(
new??firstBroker(7.21m));//添加第一個繼承接口的類

Brokers.add(
new??secondBroker(12.3m));//?添加第二個繼承接口的類

InterfacetTester?
new?Iftst=new?InterfacetTester

Foreach?(Ibroker?broker?
in?Brokers)

{

???broker.pricechange
+=new?change(iftst.pricepertradechange);

???broker[“adc”]
=12.33m;

???broker[“rty”]
=11.23ml

???broker.pricepertrade
=12.55m;

}

}

}
?

轉載于:https://www.cnblogs.com/Athrun/archive/2007/11/27/973854.html

總結

以上是生活随笔為你收集整理的c#中的接口的定議以及接口與抽象类的區別的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。