黑马程序员技术交流社区

标题: C#语言如何实现多重继承的特性? [打印本页]

作者: hongiqnglik    时间: 2013-8-11 01:46
标题: C#语言如何实现多重继承的特性?
C#语言如何实现多重继承的特性?
作者: 许庭洲    时间: 2013-8-11 06:28
本帖最后由 许庭洲 于 2013-8-11 06:36 编辑

1. C#中类继承只允许单继承,但是接口继承允许多继承,一个子接口可以有多个父接口;
2. 在多继承中,如果两个父类接口含有同名的成员,就产生了二义性,这时需要进行显示的声明。
3. 举例子:
    using System;
    interface ISequence
    {
           int Count{get;set;}
    }
    interface IRing
    {
          void Count(int i);
     }
    interface IRingSequence:ISequence,IRing{}
    class C
    {
            void Test(IRingSequence rs){
             //rs.Count(1);    错误, Count有二义性
            //rs.Count=1;    错误,Count有二义性
           ((ISequence)rs).Count=1;  //正确
           ((IRing)rs).Count(1);   //正确调用IRing.Count
        }
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//上面的例子中,前两条语句x.Count(1)和x.Count =1会产生二义性,从而导致编译时错误,因此必须显示地给X指派父接口类型,这种指派在运行时不会带来额外的开销。
   





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2