C# 接口的显示和隐示
隐示实现接口和类都可以访问
显示实现只有接口可以访问。
显示接口实现与隐式接口实现的适应场景
当类实现一个接口时,通常使用隐式接口实现,这样可以方便的访问接口方法和类自身具有的方法和属性。
当类实现多个接口时,并且接口中包含相同的方法签名,此时使用显式接口实现。即使没有相同的方法签名,仍推荐使用显式接口,因为可以标识出哪个方法属于哪个接口。
隐式接口实现,类和接口都可访问接口中方法。显式接口实现,只能通过接口访问。
显示实现益处
1:隐藏代码的实现
2:在使用接口访问的系统中,调用者只能通过接口调用而不是底层的类来访问。
PS:可以运用到公司目前的接口+Sevice架构的系统中。避免我们总是要求大家一定要通过接口访问。因为现在不用接口访问也不行了。
示例:
using System; namespace 显示实现接口 { class Program { static void Main(string[] args) { IInterface i = new MyClass(); i.A();//调用接口A方法,接口显示 只能使用接口调用 i.B();//调用接口B方法 //无法调用类里面的方法。 MyClass m = new MyClass(); m.A();//调用类的A方法 m.C();//调用类的C方法 m.B();//调用接口的B方法, //无法调用接口显示方法。 Console.ReadKey(); } } class MyClass:IInterface { public void A()//类的A方法 { Console.WriteLine("我是类的A方法。"); } public void C()//类的C方法 { Console.WriteLine("我是类的C方法。"); } void IInterface.A()//接口的A方法(显示),由于类中已经有了同名的A方法,要实现接口的方法,必须使用接口的显示方法。 { Console.WriteLine("我是接口A显示方法。"); } public void B()//接口的B方法。 { Console.WriteLine("我是接口B隐示方法。"); } } public interface IInterface { void A(); void B(); } }
输出结果: