自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C# interface學(xué)習(xí)經(jīng)驗(yàn)淺談

開(kāi)發(fā) 后端
C# interface學(xué)習(xí)是我們學(xué)習(xí)C#語(yǔ)言的一個(gè)重點(diǎn),那么如何掌握好C# interface的使用規(guī)則呢?那么本文就向你介紹一些C# interface學(xué)習(xí)的經(jīng)驗(yàn)和體會(huì)。

C# interface是把所需成員組合起來(lái),以封裝一定功能的集合。它好比一個(gè)模板,在其中定義了對(duì)象必須實(shí)現(xiàn)的成員,通過(guò)類或結(jié)構(gòu)來(lái)實(shí)現(xiàn)它。接口不能直接實(shí)例化,即ICount ic=new iCount()是錯(cuò)的。接口不能包含成員的任何代碼,只定義成員本身。接口成員的具體代碼由實(shí)現(xiàn)接口的類提供。接口使用interface關(guān)鍵字進(jìn)行聲明。聲明格式如下:

  1. [attributes] [modifiers]   
  2. interface identifier   
  3. [: base-list] {interface-body} {;} 

C# interface成員的默認(rèn)訪問(wèn)方式是public,在聲明接口成員時(shí)不能出現(xiàn)abstract、public、protected、internal、private、virtual、override或static等關(guān)鍵字。接口成員可以是方法、屬性、索引指示器或事件,不能是字段,而且接口的成員名不能相同。

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4.  
  5. namespace Interface  
  6. {  
  7. interface ICount  
  8. {  
  9. void Count();//接口成員的默認(rèn)訪問(wèn)方式是public  
  10. //int number;//接口中不能定義字段成員  
  11. int para { get;set;}  
  12. }  
  13.  
  14. class Double : ICount  
  15. {  
  16. public void Count()  
  17. //實(shí)現(xiàn)ICount的Count()方法  
  18. Console.WriteLine("The double para is {0}",2*para);  
  19. }  
  20. int p;  
  21. public int para  
  22. {  
  23. get { return p; }  
  24. set { p = value; }  
  25. }  
  26. }  
  27.  
  28. class Program  
  29. {  
  30. static void Main(string[] args)  
  31. {  
  32. Double d = new Double();  
  33. d.para = 10;//給"屬性"賦值  
  34. d.Count();  
  35.  
  36. ICount ic = (ICount)d;//轉(zhuǎn)換為接口  
  37. ic.para = 5;  
  38. ic.Count();  
  39. Console.ReadLine();  
  40. }  
  41. }  
  42. }  

C# interface的一點(diǎn)使用總結(jié)

1 一個(gè)類可以實(shí)現(xiàn)一個(gè)以上的接口;

2 類必須實(shí)現(xiàn)接口中的“所有”屬性和方法;

3 屬性和方法定義所采用的格式必須與接口定義所采用的格式完全相同。方法所采用的參數(shù)數(shù)目及參數(shù)類型必須與接口中的完全相同。方法的名稱也必須相同。

接口之間的繼承:接口的繼承僅僅說(shuō)明了接口之間的繼承關(guān)系,派生的接口繼承了父接口的成員說(shuō)明,沒(méi)有繼承父接口的實(shí)現(xiàn)。private和internal類型的接口不允許繼承。如果派生接口中準(zhǔn)備重寫(xiě)父接口的方法,實(shí)現(xiàn)方式同類的繼承成員的覆蓋。

如果一個(gè)類實(shí)現(xiàn)了某個(gè)接口,即使父接口沒(méi)有在類的基類表中列出,這個(gè)類也隱式地繼承了接口的所有父接口。

如果兩個(gè)接口A和B含有同名的成員Method,且都由同一個(gè)類C實(shí)現(xiàn),則類C必須分別為A和B的Method成員提供單獨(dú)的實(shí)現(xiàn),即顯式實(shí)現(xiàn)接口成員??尚蟹桨福?/P>

(1)直接實(shí)現(xiàn)一個(gè)接口的成員,顯式實(shí)現(xiàn)另一個(gè)接口的成員;

(2)顯式實(shí)現(xiàn)兩個(gè)接口的成員

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4.  
  5. namespace Interface  
  6. {  
  7. interface IEnglish  
  8. {  
  9. float Length();  
  10. float Width();  
  11. }  
  12. interface IMetric  
  13. {  
  14. float Length();  
  15. float Width();  
  16. }  
  17. class Class1 : IEnglish, IMetric  
  18. {  
  19. float lengthInches;  
  20. float widthInches;  
  21. public Class1(float length, float width)  
  22. {  
  23. lengthInches = length;  
  24. widthInches = width;  
  25. }  
  26. //顯式實(shí)現(xiàn)IEnglish的成員  
  27. float IEnglish.Length()  
  28. {  
  29. return lengthInches;  
  30. }  
  31. float IEnglish.Width()  
  32. {  
  33. return widthInches;  
  34. }  
  35. //顯式實(shí)現(xiàn)IMetric的成員  
  36. float IMetric.Length()  
  37. {  
  38. return lengthInches * 2.54f;  
  39. }  
  40. float IMetric.Width()  
  41. {  
  42. return widthInches * 2.54f;  
  43. }  
  44.  
  45. static void Main(string[] args)  
  46. {  
  47. Class1 c1 = new Class1(30.0f,20.0f);  
  48. IEnglish e=(IEnglish)c1;  
  49. IMetric m=(IMetric )c1;  
  50. Console.WriteLine("Length(in):{0}",e.Length());  
  51. Console.WriteLine("Width(in):{0}",e.Width());  
  52. Console.WriteLine("Length(cm):{0}",m.Length());  
  53. Console.WriteLine("Width(cm):{0}",m.Width());  
  54. Console.ReadLine();  
  55. }  
  56. }  
  57.  
  58. }  

執(zhí)行結(jié)果:

C# interface學(xué)習(xí)的一些體會(huì)和具體的實(shí)例演示就向你介紹到這里,希望對(duì)你了解和學(xué)習(xí)C# interface有所幫助。

【編輯推薦】

  1. 淺析C#接口特點(diǎn)及實(shí)例應(yīng)用
  2. C# interface實(shí)例淺析
  3. C# interface編程應(yīng)用淺析
  4. C#interface定義及使用淺析
  5. C#顯式實(shí)現(xiàn)接口原理淺析
責(zé)任編輯:仲衡 來(lái)源: CSDN博客
相關(guān)推薦

2009-08-28 12:25:58

C#靜態(tài)方法

2009-08-13 18:13:27

C#學(xué)習(xí)經(jīng)驗(yàn)

2009-08-19 10:25:18

C#托管資源

2009-08-19 16:36:29

C#管道技術(shù)

2009-08-20 15:33:03

C#跳躍語(yǔ)句

2009-08-26 17:24:49

C# Mutex對(duì)象

2009-08-31 15:48:02

C# Singleto

2009-08-25 16:14:06

C#使用ADOX

2009-08-13 15:03:58

C#結(jié)構(gòu)體變量

2009-08-24 17:06:37

C#字符串

2009-08-28 16:43:57

C#多線程學(xué)習(xí)

2009-08-27 09:27:49

C#擴(kuò)展方法

2009-08-28 10:31:47

C#字符ASCII碼

2009-08-31 16:51:11

C# Main()方法

2009-08-11 14:20:41

C# .NET學(xué)習(xí)經(jīng)驗(yàn)

2009-09-04 14:30:28

C#讀取BLOB數(shù)據(jù)

2009-08-27 13:45:45

C#別名指示符

2009-08-12 15:55:12

C#接口定義

2009-08-27 13:30:11

C# interfac

2009-09-04 17:44:35

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)