如果类实现两个接口,并且这两个接口包含具有相同签名的成员,那么在类中实现该成员将导致两个接口都使用该成员作为它们的实现。然而,如果两个接口成员实现不同的功能,则可能会导致其中一个接口的实现不正确或两个接口的实现都不正确,这时可以显式地实现接口成员,即创建一个仅通过该接口调用并且特定于该接口的类成员。显式接口成员实现是使用接口名称和一个句点命名该类成员来实现的。
例1
创建一个控制台应用程序,其中声明了两个接口 ImyInterfacel1和 ImyInterface2,在这两个接口中声明一个同名方法 Add。然后定义一个类MyClass,该类继承自已经声明的两个接口。在 MyClass 类中实现接口中的方法时,由于 ImyInterface1 和 ImyInterface2 接口中声明的方法名相同,这里使用了显式接口成员实现。最后在主程序类 Program 的 Main 方法中使用接口对象调用接口中定义的方法。
代码如下:
interface ImyInterface1
{int Add(); //求和方法,加法运算的和
}
Interface ImyInterface2
{int Add(); //求和方法,加法运算的和
}
class myClass : ImyInterface1, ImyInterface2 //继承接口
{///<summary>///求和方法///</summary>///<returns>加法运算的和</returns>Int ImyInterface1.Addo() //显式接口成员实现 {int x = 3;int y = 5; return x + y;}///<summary>///求和方法///</summary>///<returns>加法运算的和</returns> int ImyInterface2.Add() //显式接口成员实现 {int x = 3; int y = 5; int z = 7;return x + y + z;}
}
class Program
{static void Main(string[] args){myClass myclass = new myClass(); //实例化接口继承类的对象 ImyInterface1 imyinterface1 = myclass; //使用接口继承类的对象实例化接口Console.WriteLine(imyinterface1.Add()); //使用接口对象调用接口中的方法 ImyInterface2 imyinterface2 = myclass; //使用接口继承类的对象实例化接口 Console.WriteLine(imyinterface2.Add()); //使用接口对象调用接口中的方法 }
}
运行结果为:
8
15
注意
① 显式接口成员实现中不能包含访问修饰符、abstract、virtual、override 或 static 修饰符。
② 显式接口成员属于接口的成员,而不是类的成员,因此,不能使用类对象直接访问,只能通过接口对象来访问。
- END -
关注小编不迷路呦~