1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5
6 /*----------------------------------------------------------------------------
7 * 显式实现接口:
8 * 1. 一个类继承了两个以上的接口
9 * 2. 接口中存在相同名称的方法
10 * 3. 通过【接口.方法()】格式在类中显示实现
11 * 4. 将类的实例化的对象传递给不同的接口对象, 则调用
12 * 的是不同接口下各自的方法
13 * 5. 类中显式实现接口的方法前不能使用任何修饰词
14 * 6. 显示实现的成员都默认为私有, 即不能通过类实例化
15 * 对象在类外部直接调用, 正确的访问方式是通过类对
16 * 像显式的转换为对应的接口, 通过接口来访问方法
17 -----------------------------------------------------------------------------*/
18 namespace 接口_显式接口实现
19 {
20 // 定义接口: IChineseGreeting
21 interface IChineseGreeting
22 {
23 void SayHello();
24 }
25
26 // 定义接口: IAmericanGreeting
27 interface IAmericanGreeting
28 {
29 void SayHello();
30 }
31
32 // 实现接口: Speaker类
33 public class Speaker : IChineseGreeting, IAmericanGreeting
34 {
35 // 接口: IChineseGreeting 显示实现
36 void IChineseGreeting.SayHello()
37 {
38 Console.WriteLine("你好!");
39 }
40
41 // 接口: IAmericanGreeting 显示实现
42 void IAmericanGreeting.SayHello()
43 {
44 Console.WriteLine("Hello!");
45 }
46 }
47
48 class Program
49 {
50 static void Main(string[] args)
51 {
52 Speaker speaker = new Speaker();
53
54 IChineseGreeting iChineseG = (IChineseGreeting)speaker;
55 iChineseG.SayHello(); // 输出【"你好"】
56
57 IAmericanGreeting iAmericanG = (IAmericanGreeting)speaker;
58 iAmericanG.SayHello(); // 输出【"Hello"】
59
60 Console.ReadLine();
61 }
62 }
63 }