C#实现多重继承和实例

多重继承:一个类从两个或多个基类派生。多继承的好处:减少程序复杂性,减少出错的可能性,运行效率更高。
举例:SendDtata类的作用是发送数据,ReceiveData类的作用是接收数据,现在要创建SocketData类,作用是发送和接受数据,此时,你希望SocketData从SendDtata和ReceiveData这两个类继承,但CLR不支持多继承,也就意味着C#不支持多继承,但是,CLR允许通过接口Interface实现“缩水版”的多继承。

大家都知道Interface实际上就是一个虚函数列表指针,内部封装的只有函数和属性,而且Interface不能实例化只能通过派生(因为没有构造函数)才可以使用。这一点和抽象类很类似,可是抽象类是个类,他有方法的实现,它所描述的对象是一个无法在现实中具现的对象,但它本身是个类型对象。而接口实际上是一种标准。

但多继承也有不合理的情况,例如: 男人 、女人是两个基类。如果一个类同时继承这两个类是什么样的人呢?所以,要合理正确地使用多继承。

   #region Test
    public interface AA
    {
          int a { get; set; }
    }
    public interface BB
    {
        int b { get; set; }
    }
    public class CC:AA,BB
    {
       public int a { get; set; }
        public int b { get; set; }
    }
    public class DD<T> : AA
    {
        public int a { get; set; }
       
    }
    public class EE<T> : AA where T:BB
    {
        public int a { get; set; }
        public int b { get; set; }
    }
    public class FF<T>  where T : AA
    {
        public int a { get; set; }
        
    }
    public class Test
    {
        public void main()
        {
            CC c = new CC();
            DD<AA> d = new DD<AA>();
            EE<BB> e = new EE<BB>();
            FF<AA> f = new FF<AA>();
        }
    }
    #endregion

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值