C#中的接口
4、实现专门的接口方法(2)
如果EditBox中的Pait方法为公有并且同时提供了IControl.Paint方法,程序将是如何运行的呢?代码如下:
using System ; interface IControl { void Paint(); } public class EditBox: IControl { public void Paint() { Console.WriteLine("Pain method is called!"); } void IControl.Paint() { Console.WriteLine("IControl.Pain method is called!"); } } class Test { static void Main() { EditBox editbox = new EditBox(); editbox.Paint(); ((IControl)editbox).Paint(); } }
程序执行结果如下:
Pain method is called! IControl.Pain method is called!
程序执行时内存布局如下:
可见,EditBox中公有的Paint方法并不是接口实现方法,真正的接口实现方法是IControl.Paint,这将导致editbox.Paint()
方法与((IControl)editbox).Paint()
的执行结果并不一样。
5、结论
接口方法的实现通常是通过类中的公有方法实现的;
在一些特殊情况下(代码隐藏、一个类实现的两个接口具有相同的接口方法等),需要专门实现某个接口的方法。