12.4 实现多个接口

在C#中一个类不能从多个类继承,但可以实现多个基接口,而一个接口可以从多个接口继承。在12.2节我们学习了实现单个接口的情况,本节将学习一个类实现多个接口。顾名思义,实现多个接口就意味着,在实现类中要实现所有实现的接口规定的所有成员,也意味着对于同一个类,可以使用它实现的任意接口类型来引用它的实例,但使用不同的接口类型引用,直接影响该类型的可用成员。例如类A实现了接口Interface1和Interface2,当使用Interface1的类型引用时,只有Interface1定义的成员可见并可用;使用Interface2的类型引用时也只能调用Interface2接口定义的成员。

下面来看一个例子,如代码清单12-7所示。在这个例子中,先定义两个接口,再定义一个类实现它们,最后再分别通过两种接口类型的引用调用类的实例。

代码清单12-7 实现多个接口


1 interface ISample

2{

3 void Method1();

4}

5

6 interface ISample2

7{

8 void Method2();

9}

10

11 class ClassOne:ISample,ISample2

12{

13 public void Method1()

14{

15 System.Console.WriteLine("from ClassOne.Method1()");

16}

17

18 public void Method2()

19{

20 System.Console.WriteLine("from ClassOne.Method2()");

21}

22}

23

24 class ClassExample

25{

26 public static void Main()

27{

28 ISample sample1=new ClassOne();

29 ISample2 sample2=new ClassOne();

30 sample1.Method1();

31 sample2.Method2();

32}

33}


上述代码的执行结果如下:


from ClassOne.Method1()

from ClassOne.Method2()


关于代码清单12-7的说明如表12-4所示。

12.4 实现多个接口 - 图1

上述代码使用图示说明,如图12-7所示。

12.4 实现多个接口 - 图2

图 12-7 实现多个接口