对C#中的接口的思考(二)

现在接着上篇博客写,上次是写到了关于C#中接口出现的意义的第二点:实现多继承。

在C#语言中本身就有规定一个类只能有一个直接基类,也就是不允许出现多继承,这个主要

是基于两个方面原因的考虑: 

(上一部分的连接是http://blog.csdn.net/yyc1023/article/details/17270951

--------------------YYC

一、多继承很容易出现“二义性”,也就是在两个或以上的基类中出现了相同名字的方法时,

在其派生类中通过base关键字调用父类中该方法时就会引发歧义。

二、多继承会严重的影响程序的性能,例如:首先:在存储空间方面派生类的对象所占的

空间将会是其所以的基类对象的内存空间之和;其次:派生类的对象在创建时会依次调用其所

有的基类的构造函数,所以其效率肯定会有所下降,特别是当一个类有过多的基类时这个问题

将会变得很明显的。


但是多继承又是面向对象的程序设计中非常重要的一个特性,所以C#在考虑这个问题时就提出

了基于接口的多继承,也就是说在C#语言中允许一个类或接口同时继承多个接口,在声明时分

别用逗号隔开即可。

For example:

  public interface IA 
        {
            int GetInt();
        }


        public interface IB
        {
            int GetInt();
        }


        class CA : IA, IB
        {


            int IA.GetInt()
            {
                return 1;
            }


            int IB.GetInt()
            {
                return 2;
            }


        }

由上可以看出用基于接口实现的多继承的优点是:首先:这个更本不会引起程序性能的问题,因为

接口中是不能出现成员字段和实体方法和构造函数的。其次:关于“二义性”的问题在接口的多继承中

只要多显示实现不同接口的相同名字的接口方法即可很容易消除了二义性了,因为在通过不同接口对

象在调用该方法时都只会调用自己的显示实现的方法。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值