国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

C#接口定義及實例應用淺析

開發 后端
C#接口定義是什么呢?C#接口定義相關的一些內容是什么?C#接口定義的學習需要注意什么呢?那么本文就向你詳細介紹這些內容。

C#接口定義是什么呢?其實,C#接口定義的就是一種約定,使得實現接口的類或結構在形式上保持一致。個人覺得,使用接口可以使程序更加清晰和條理化,這就是接口的好處,但并不是所有的編程語言都支持接口,C#是支持接口的。注意,雖然在概念上,C#接口類似于COM接口,但他們的底層結構是不同的。那么,我們來看一下如何聲明和使用接口。

C#接口定義之聲明接口

聲明接口在語法上和聲明抽象類完全相同,例如這里有一個銀行賬戶的接口:

  1. public interface IBankAccount  
  2. {  
  3. void PayIn(decimal amount);  
  4. bool Withdraw(decimal amount);  
  5.  
  6. decimal Balance  
  7. {  
  8. get;  
  9. }  
  10. }  

注意:接口中只能包含方法、屬性、索引器和事件的聲明。不允許聲明成員上的修飾符,即使是pubilc都不行,因為接口成員總是公有的,也不能聲明為虛擬和靜態的。如果需要修飾符,***讓實現類來聲明。

C#接口定義之使用接口的實例:

這是書上的一個簡單的例子,但足以說明接口的使用方法。

一個銀行賬戶的接口,兩個不同銀行賬戶的實現類,都繼承于這個接口。接口聲明如上。下面是兩個賬戶類:

  1. class SaverAccount : IBankAccount  
  2. {  
  3. private decimal balance;  
  4.  
  5. public decimal Balance  
  6. {  
  7. get   
  8. {  
  9. return balance;  
  10. }  
  11. }  
  12.  
  13. public void PayIn(decimal amount)  
  14. {  
  15. balance += amount;  
  16. }  
  17.  
  18. public bool Withdraw(decimal amount)  
  19. {  
  20. if (balance >= amount)  
  21. {  
  22. balance -= amount;  
  23. return true;  
  24. }  
  25. Console.WriteLine("Withdraw failed.");  
  26. return false;  
  27. }  
  28.  
  29. public override string ToString()  
  30. {  
  31. return String.Format("Venus Bank Saver:Balance={0,6:C}", balance);  
  32. }  
  33. }  
  34.  
  35. class GoldAccount : IBankAccount  
  36. {  
  37. private decimal balance;  
  38.  
  39. public decimal Balance  
  40. {  
  41. get   
  42. {  
  43. return balance;  
  44. }  
  45. }  
  46.  
  47. public void PayIn(decimal amount)  
  48. {  
  49. balance += amount;  
  50. }  
  51.  
  52. public bool Withdraw(decimal amount)  
  53. {  
  54. if (balance >= amount)  
  55. {  
  56. balance -= amount;  
  57. return true;  
  58. }  
  59. Console.WriteLine("Withdraw failed.");  
  60. return false;  
  61. }  
  62.  
  63. public override string ToString()  
  64. {  
  65. return String.Format(  
  66. "Jupiter Bank Saver:Balance={0,6:C}", balance);  
  67. }  
  68. }  

可見,這兩個實現類多繼承了IBankAccount接口,因此它們必須要實現接口中的所有聲明的方法。要不然,編譯就會出錯。讓我們來測試一下,下面是測試代碼:

  1. static void Main(string[] args)  
  2. {  
  3. IBankAccount venusAccount = new SaverAccount();  
  4. IBankAccount jupiterAccount = new CurrentAccount();  
  5. venusAccount.PayIn(200);  
  6. jupiterAccount.PayIn(500);  
  7. Console.WriteLine(venusAccount.ToString());  
  8. jupiterAccount.PayIn(400);  
  9. jupiterAccount.Withdraw(500);  
  10. jupiterAccount.Withdraw(100);  
  11. Console.WriteLine(jupiterAccount.ToString());  
  12.  
  13. }  

請注意開頭兩句,我們把它們聲明為IBankAccount引用的方式,而沒有聲明為類的引用,為什么呢?因為,這樣我們就可以讓它指向執行這個接口的任何類的實例了,比較靈活。但這也有個缺點,如果我們要執行不屬于接口的方法,比如這里重載的ToString()方法,就要先把接口的引用強制轉換成合適的類型了。

C#接口定義之接口的繼承

接口也可以彼此繼承,就象類的繼承一樣。比如我們又聲明一個接口ITransferBankAccount,它繼承于IBankAccount接口。

  1. interface ITransferBankAccount : IBankAccount   
  2. {  
  3. bool TransferTo(IBankAccount destination, decimal amount);  

在這個接口中,又新增加了一個方法TransferTo(),所以如果我們要寫一個類從ITransferBankAccount繼承的話,就必須要實現IBankAccount和ITransferBankAccount兩個接口所有的方法聲明。即:

  1. class CurrentAccount : ITransferBankAccount  
  2. {  
  3. private decimal balance;  
  4.  
  5. public decimal Balance  
  6. {  
  7. get 
  8. {  
  9. return balance;  
  10. }  
  11. }  
  12.  
  13. public void PayIn(decimal amount)  
  14. {  
  15. balance += amount;  
  16. }  
  17.  
  18. public bool Withdraw(decimal amount)  
  19. {  
  20. if (balance >= amount)  
  21. {  
  22. balance -= amount;  
  23. return true;  
  24. }  
  25. Console.WriteLine("Withdraw failed.");  
  26. return false;  
  27. }  
  28.  
  29. public override string ToString()  
  30. {  
  31. return String.Format(  
  32. "Jupiter Bank Saver:Balance={0,6:C}", balance);  
  33. }  
  34.  
  35. public bool TransferTo(  
  36. IBankAccount destination, decimal amount)  
  37. {  
  38. if (Withdraw(amount))  
  39. {  
  40. destination.PayIn(amount);  
  41. return true;  
  42. }  
  43. else 
  44. {   
  45. return false;  
  46. }  
  47. }  
  48. }  

C#接口定義的一些總結:

1、C#中的接口是獨立于類來定義的。這與 C++模型是對立的,在 C++中接口實際上就是抽象基類。

2、接口和類都可以繼承多個接口。

3、類可以繼承一個基類,接口根本不能繼承類。這種模型避免了 C++的多繼承問題,C++中不同基類中的實現可能出現沖突。因此也不再需要諸如虛擬繼承和顯式作用域這類復雜機制。C#的簡化接口模型有助于加快應用程序的開發。

4、一個接口定義一個只有抽象成員的引用類型。C#中一個接口實際所做的,僅僅只存在著方法標志,但根本就沒有執行代碼。這就暗示了不能實例化一個接口,只能實例化一個派生自該接口的對象。

5、接口可以定義方法、屬性和索引。所以,對比一個類,接口的特殊性是:當定義一個類時,可以派生自多重接口,而你只能可以從僅有的一個類派生。

C#接口定義以及相關的內容就向你介紹到這里,希望對你了解和學習C#接口定義及相關內容有所幫助。

【編輯推薦】

  1. C#實現string和byte數組的轉換
  2. C# Byte數組轉換String詳解
  3. 詳解C#調用水晶報表的實現
  4. C#水晶報表數據的獲取方法實例淺析
  5. .Net水晶報表使用學習的九大步驟
責任編輯:仲衡 來源: 博客園
相關推薦

2009-08-27 13:05:06

C#接口特點C#接口實例

2009-08-27 17:59:56

C#接口定義

2009-08-17 17:49:20

C# 枚舉

2009-08-07 08:53:52

C# ICloneab

2009-09-28 14:45:22

C#接口的定義

2009-08-27 18:09:49

C#接口的實現

2009-08-24 15:12:13

C# 泛型接口

2009-08-19 11:28:41

C#操作Word

2009-08-24 17:58:19

C# 泛型集合

2009-08-27 13:30:11

C# interfac

2009-08-24 10:37:27

C# 泛型

2009-08-24 11:35:20

C# 泛型應用

2009-08-18 13:49:21

C# 操作Excel

2009-09-09 13:57:28

C# XML解析

2009-08-24 15:02:05

C# 類型

2009-07-31 16:25:29

C#回調函數API應用

2009-08-19 17:38:17

C# 操作符分類

2009-08-31 16:48:02

C#實現IDispos

2009-09-01 18:29:24

C#實現多個接口

2009-08-18 10:30:30

C#枚舉
點贊
收藏

51CTO技術棧公眾號

看国产成人h片视频| 久久九九精品| 91电影在线观看| 国产精品第157页| 群体交乱之放荡娇妻一区二区| 色悠久久久久综合欧美99| 亚洲国产精品毛片av不卡在线| 亚洲欧美卡通另类91av| 亚洲天堂av资源在线观看| 亚洲综合色区另类av| 欧洲一区二区视频| 美国成人xxx| 欧美综合天天夜夜久久| 中文字幕第80页| 蜜桃一区二区三区在线观看| 青青草99啪国产免费| 亚洲欧美在线人成swag| 亚洲成人亚洲激情| 黄av在线播放| 色婷婷av一区| 中文字幕av网| 亚洲精品一二三| 涩涩视频免费网站| 91啪亚洲精品| 国产美女永久无遮挡| 美腿丝袜一区二区三区| 日本亚洲导航| 老司机精品久久| 精品久久久久久一区| 一区二区三区毛片免费| 成人免费在线视频网站| 精品精品久久| 欧美在线视频a| 国产aⅴ综合色| 亚洲人成在线免费观看| 影音先锋日韩在线| 国产99久久精品一区二区永久免费| 在线视频欧美性高潮| 成本人h片动漫网站在线观看| 久久先锋影音av鲁色资源网| 久久国产精品-国产精品| 国产精品专区免费| 欧美日韩亚洲综合一区| 色哟哟精品一区| 欧美日韩一区二区三区四区不卡| av网站在线观看不卡| 欧美性大战久久| 成人福利片网站| 4438成人网| 粗大黑人巨茎大战欧美成人| 欧洲一区在线观看| 一区二区成人| 欧美久久久久久久久久| 1769在线观看| 欧美无乱码久久久免费午夜一区| 一卡二卡三卡亚洲| 欧美写真视频网站| 川上优的av在线一区二区| 一本久久a久久免费精品不卡| 理论片鲁丝二区爱情网| 国产精品人人做人人爽人人添| 日韩一区二区三区不卡视频| 一区二区高清在线| 国产特级淫片高清视频| 99久久国产免费看| 天堂v视频永久在线播放 | 自拍视频在线免费观看| 一区二区在线看| 粉嫩喷白浆久久| 国产成人一级电影| 亚洲资源在线看| 在线中文字幕视频观看| 亚洲电影第1页| 麻豆tv在线| 国产日韩欧美精品在线| 在线国产精品网| 91色porny在线视频| 亚洲视频中文字幕| 日日噜噜噜夜夜爽爽狠狠| 久久嫩草精品久久久久| 动漫h在线观看| 精品久久人人做人人爰| 成人精品国产| 国产精品第一区| 日本特黄久久久高潮| 亚洲另类在线制服丝袜| 国产在线视频资源| 性欧美xxxx| 久久日一线二线三线suv| 在线免费视频你懂得| 国产精品91久久久| 91高清一区| 亚洲欧美在线免费观看| 国产伦精品一区二区三区在线播放 | 久久久国产视频| 波多野结衣在线播放一区| 亚洲精品一区二区三区樱花| 国产亚洲成av人在线观看导航| 国产中文在线| 欧美成在线观看| 裸体一区二区| 日本免费专区| 在线观看成人黄色| 亚洲视频免费| 中文久久久久久| 精品国产乱码久久久久久蜜臀| 青青久久av| 欧美日韩dvd| 色婷婷精品久久二区二区蜜臀av | 日韩 欧美 视频| 色94色欧美sute亚洲线路二 | 国产精品777| 懂色一区二区三区免费观看| 国产黄色在线| 欧美亚洲在线视频| 粉嫩aⅴ一区二区三区四区| 成人好色电影| 久久久这里只有精品视频| 蜜桃av噜噜一区二区三区小说| 亚洲日本高清| 97视频在线观看网址| 成人免费精品视频| 久久www人成免费看片中文| 国产精品日韩一区| 国产精品欧美一区喷水| 精品女同一区二区三区在线观看| 日本在线观看一区| 欧美日韩精品久久久| 三级电影一区| 开心丁香婷婷深爱五月| 欧美激情国产高清| 不卡av免费在线观看| 国产精品蜜臀| 欧洲一区二区日韩在线视频观看免费| 欧美性猛交xxxx久久久| 精品日韩毛片| 成视频年人免费看黄网站| 欧美老妇交乱视频| 99精品欧美一区二区蜜桃免费| 亚洲深夜视频| 国产一二三四五| 亚洲国产精品久久91精品| 老鸭窝亚洲一区二区三区| 99re在线视频| 国产视色精品亚洲一区二区| 日本韩国精品在线| 亚洲五月综合| 伊人网在线免费观看| 国产精品丝袜白浆摸在线 | 欧美黑人巨大xxxxx| 久久久影院一区二区三区| 色噜噜夜夜夜综合网| 欧美成人久久| 成年人免费在线视频| 51精品国产人成在线观看| 日韩欧美国产视频| 最新国产精品| 在线免费看黄网站| 欧美日韩电影一区二区| 日韩精品影音先锋| 麻豆一区二区在线| 超级碰碰久久| 亚洲 欧美 日韩 国产综合 在线| 国产一区二区三区久久精品| 99在线精品观看| 国产欧美自拍一区| 激情婷婷丁香| 亚洲一区亚洲二区| 欧美二区三区91| 久久亚洲图片| 日本三级一区| 黄色网页免费在线观看| 免费av在线一区| 亚洲欧美综合色| 日韩免费在线| 搞黄视频在线观看| 亚洲一区尤物| 色中色综合影院手机版在线观看| 国产精品久久久久四虎| 欧美第一精品| 在线免费观看的av| 日韩欧美视频网站| …久久精品99久久香蕉国产| 欧美日韩亚洲视频一区| 免费高清在线视频一区·| 日日狠狠久久| 人人澡人一摸人人添| av一区二区三区在线观看| 亚洲国产成人久久综合| 久久综合久久综合亚洲| 成人亚洲一区| 丁香花在线影院| 黄色高清无遮挡| 成人中文字幕+乱码+中文字幕| 日韩三级在线免费观看| 久久中文字幕电影| 在线看片不卡| 日本综合视频| 天堂影院在线| 国产成人无码精品久久久性色|