C#不支持类的多继承,然而却可以继承多个接口。简单的就不说了,来看看下面的例子:
public interface IRead { string GetText(); } public interface IWrite { string GetText(); }
对于上面的这种情况,如果一个类同时继承上面两个接口,那么如何去实现这两个名字相同的方法呢?
显示接口方法(EIMI)
public class MyCpu:IRead,IWrite { string IRead.GetText() { return "这个方法实现IRead的方法"; } string IWrite.GetText() { return "这个方法实现IWrite的方法"; } public string GetText() { return "这个方法实现自己独有的方法"; } }
如上图,只需要在方法前面加上接口名即可。然而显示接口方法只能是私有方法。
然而这种方法要慎用,因为使用了这种方法后,值类型的实例在转换成接口时会发生装箱。因为是私有的,所以也不能被派生类调用。
最重要的是显示接口方法的调用很奇葩:
var cpu = new MyCpu(); Console.WriteLine(cpu.GetText()); Console.WriteLine(((IRead)cpu).GetText()); IWrite b = cpu; Console.WriteLine(b.GetText()); Console.ReadLine();
必须先转一道再调用,会让使用的人很困惑。
用基类还是用接口
然而我认为实际上仅仅用第一个来判断就好了,因为它更偏向于基于实际业务去考虑到底用基类还是接口。
原文:http://www.cnblogs.com/vvjiang/p/5299551.html