接口(C# 参考)

接口只包含方法、属性、事件或索引器的签名。 实现接口的类或结构必须实现接口定义中指定的接口成员。 在下面的示例,类 ImplementationClass必须实现一个不具有参数并返回 void 的名为 SampleMethod 的方法。

示例

 1 interface ISampleInterface
 2 {
 3     void SampleMethod();
 4 }
 5 
 6 class ImplementationClass : ISampleInterface
 7 {
 8     // Explicit interface member implementation: 
 9     void ISampleInterface.SampleMethod()
10     {
11         // Method implementation.
12     }
13 
14     static void Main()
15     {
16         // Declare an interface instance.
17         ISampleInterface obj = new ImplementationClass();
18 
19         // Call the member.
20         obj.SampleMethod();
21     }
22 }

接口可以是命名空间或类的成员,并且可以包含下列成员的签名:

  • 方法

  • 属性

  • 索引器

  • 事件

一个接口可从一个或多个基接口继承。

当基类型列表包含基类和接口时,基类必须是列表中的第一项。

实现接口的类可以显式实现该接口的成员。 显式实现的成员不能通过类实例访问,而只能通过接口实例访问。

示例

下面的示例演示了接口实现。 在此示例中,接口包含属性声明,类包含实现。 实现 IPoint 的类的任何实例都具有整数属性 x 和 y。

 1 interface IPoint
 2 {
 3    // Property signatures:
 4    int x
 5    {
 6       get;
 7       set;
 8    }
 9 
10    int y
11    {
12       get;
13       set;
14    }
15 }
16 
17 class Point : IPoint
18 {
19    // Fields:
20    private int _x;
21    private int _y;
22 
23    // Constructor:
24    public Point(int x, int y)
25    {
26       _x = x;
27       _y = y;
28    }
29 
30    // Property implementation:
31    public int x
32    {
33       get
34       {
35          return _x;
36       }
37 
38       set
39       {
40          _x = value;
41       }
42    }
43 
44    public int y
45    {
46       get
47       {
48          return _y;
49       }
50       set
51       {
52          _y = value;
53       }
54    }
55 }
56 
57 class MainClass
58 {
59    static void PrintPoint(IPoint p)
60    {
61       Console.WriteLine("x={0}, y={1}", p.x, p.y);
62    }
63 
64    static void Main()
65    {
66       Point p = new Point(2, 3);
67       Console.Write("My Point: ");
68       PrintPoint(p);
69    }
70 }
71 // Output: My Point: x=2, y=3

作者:耑新新,发布于  博客园

转载请注明出处,欢迎邮件交流:zhuanxinxin@aliyun.com

原文地址:https://www.cnblogs.com/Arthurian/p/5964453.html