在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
经常,一个类会实现多个接口,比如用户的一个控件继承自"IEdit"和"ICombo",每个接口无疑都有一个Paint方法来供子类实现如何画他们,但是多重继承就会出现问题,默认情况下,C#不允许实现Paint方法。 通过试验,翻阅MSDN,我总结了这么几条规律: 1。要么只实现一个方法,否则函数重明,就会存在二义性 比如:void IFace1.Print(){......}; 或者 完整的例子见下面
代码
using System;
namespace TestInterface { /// <summary> /// Class1 的摘要说明。 /// 本代码演示了C#中接口的基本特征,并检验了作者心中迷惑但是书中没有详细讲解的地方,比如接口多重 /// 继承时,多个父类接口有相同的方法时,派生接口如何定义、使用的问题 /// </summary> interface IFace1 { void Print(); void Hello(); } interface IFace2 { void Print(); void Goodbye(); } class FacetoFace : IFace1,IFace2 { #region IFace1 成员 void IFace1.Print() { Console.WriteLine("这是IFace1的Print函数"); } public void Hello() { // TODO: 添加 FacetoFace.Hello 实现 Console.WriteLine("IFace1向您说Hello!"); } #endregion #region IFace2 成员 public void Goodbye() { // TODO: 添加 FacetoFace.Goodbye 实现 Console.WriteLine("IFace2向您说GoodBye"); } void IFace2.Print() { Console.WriteLine("这是IFace2的Print函数"); } #endregion } class Class1 { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main(string[] args) { // // TODO: 在此处添加代码以启动应用程序 FacetoFace facetest1=new FacetoFace(); ((IFace1)facetest1).Print(); ((IFace2)facetest1).Print(); facetest1.Hello(); facetest1.Goodbye(); // } } }
文章来自: 好喜爱学习网(http://www.haoxiai.net/) 网址:http://www.haoxiai.net/wangzhanzhizuo/aspnet/53982.html |
请发表评论