多重继承:一个类从两个或多个基类派生。多继承的好处:减少程序复杂性,减少出错的可能性,运行效率更高。
举例: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