using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 接口显式隐式实现 { class Program { static void Main(string[] args) { Test t1 = new Test(); ITest2 test2 = t1; test2.study();//ITest2.study 显式实现时候,接口能访问实现接口的方法 t1.study();//ITest1.study 显式实现时候,子类不能访问显式实现接口的方法,只能访问到类里默认方法 Test t2 = new Test(); ITest1 test1 = t2; test1.study();//ITest1.study 隐式实现时候,接口能访问实现接口的方法 t2.study();//ITest1.study 隐式实现时候,子类能访问实现接口的方法,其实也就访问默认方法。 } } interface ITest1 { void study(); } interface ITest2 { void study(); } class Test : ITest1, ITest2 { public void study() //默认就是隐式实现,如果其他接口没显式实现,此时候会同时实现2个接口,如果显式实现了其他接口,此方法不对显式实现接口共享了。实现接口前面需要用public 修饰 { Console.WriteLine("ITest1.study"); } void ITest2.study() //如果我们要显式实现,就要加上 ITest2. 前面不能有 public,private修饰符 { Console.WriteLine("ITest2.study"); } } }
显式实现的区别:
1、显示实现的方法只能被接口调用了,不能被类调用该方法,调用会语法报错。
2、如果类实现多个接口,多个接口都有对应的同一个方法名。此时候要么都共同用一个方法实现;要么单独各自实现不同接口的方法,要实现各自的方法就需要用到显式实现了,然后通过 对应的接口对象来调用显式实现的方法