接口

摘自《Visual C# 2010开发权威指南》

/**************************************************************************

接口描述的是可属于任何类或结构的一组相关功能,它只包含方法、属性、事件或索引器的签名,而且没有相关的实现。接口中的成员总是公用的,不能存在修饰符。实现接口的类或结构必须实现接口定义中指定的接口成员。可以使用关键字interface来定义接口。

下面是C#中的IComparable接口的声明:

  1. public interface IComparable  
  2. {  
  3. int CompareTo(object obj);  
  4. }  

IComparable接口的定义中仅包含了一个方法CompareTo(),并且该方法没有任何修饰符及实现。如果一个类实现了IComparable接口,它就必须实现CompareTo方法。

下面使用一个例子来说明接口的用法:

  1. interface IPerson  
  2. {  
  3. int Age { get; set; }  
  4. string Name { get; set; }  
  5. }  
  6. interface IPrintable  
  7. {  
  8. void PrintInfo();  
  9. }  
  10. class Worker : IPerson, IPrintable  
  11. {  
  12.  
  13. #region IPerson Members  
  14.  
  15. private int age;  
  16. public int Age  
  17. {  
  18. get { return age; }  
  19. set { age = value; }  
  20. }  
  21. private string name;  
  22. public string Name  
  23. {  
  24. get { return name; }  
  25. set { name = value; }  
  26. }  
  27. #endregion  
  28. #region IPrintable Members  
  29. public void PrintInfo()  
  30. {  
  31. Console.WriteLine("=======Worker.PrintInfo=======");  
  32. Console.WriteLine("Name: {0}", Name);  
  33. Console.WriteLine("Age: {0}", Age);  
  34. }  
  35. #endregion  
  36. }  
  37. class Program  
  38. {  
  39. static void Main(string[] args)  
  40. {  
  41. Worker w = new Worker();  
  42. w.Name = "John";  
  43. w.Age = 20;  
  44. w.PrintInfo();  
  45. }  
  46. }  

Worker类实现了两个接口:IPerson和IPrintable。它从IPerson接口中获得了Age和Name两个属性,从IPrintable接口获得了PrintInfo()方法,并为这些继承的成员提供了实现。

接口是引用类型,可以将一个派生自接口的类转化为接口,并通过接口的引用来访问派生类继承的成员。例如:

  1. class Program  
  2. {  
  3. static void Main(string[] args)  
  4. {  
  5. Worker w = new Worker();  
  6. w.Name = "John";  
  7. w.Age = 20;  
  8. IPerson p = (IPerson)w;  
  9. Console.WriteLine(  
  10. string.Format("IPerson.Name: {0}, IPerson.Age: {1}", p.Name, p.Age));   
  11. Console.WriteLine();  
  12. IPrintable printable = (IPrintable)w;  
  13. printable.PrintInfo();  
  14. }  
  15. }  

**********************************************************************/

 

个人认为接口能降低项目中相同功能代码的识别难度。

 

要用接口,需求中就必须得有这一接口中的功能。

 

posted @ 2013-03-01 16:44  yuchao.xia  阅读(193)  评论(0编辑  收藏  举报