继承的类型
在面向对象的编程中,有两种截然不同的集成类型:实现继承和接口继承
实现继承:表示一个类型派生于一个基类型,它拥有该基类型的所有成员字段和函数.在实现继承中,派生类型采用基类型的每个函数的实现代码,除非在派生类型的定义中指定重写某个函数的实现代码.在需要给现有的类型添加功能,或许=多相关的类型共享一组重要的公用功能时,这种类型的继承非常有用.
接口继承:表示一个类型只继承了函数的签名,没有继承任何实现代码.在需要指定该类型具有某些可用的特征时,最好使用这种类型的继承.
C#支持实现继承和接口继承.他们都内置于语言和框架中,因此可以根据应用程序的体系结构选择合适的继承.
一些语言是支持多继承的,即一个类派生自多个类.使用多重继承的优点是有争议的:一方面,可以使用多重继承编写发杂,但是紧凑的代码,另一方面,使用多重继承的代码常常很难理解和调试.
C#是不支持多重继承的,到那时C#允许类型派生于多个接口----多重接口继承.这说明C#可以派生自另一个类和任意多个接口.更准确的说,因为SYstem.Object是一个公共的基类,所以每个C#类(出类Object类之外)都有一个基类,还可以有人以多个基接口.
使用结构(值类型)的一个限制是不支持继承,单每个结构都可以派生自System.Valuetype实际上还应该更仔细一点:不能编码实现类型层次的机构,单结构可以实现接口.换句话说,结构不支持实现继承,但支持接口继承,事实上,定义结构和类可以总结为:
结构总是派生自System.ValueType,他们还可以派生自人一多个接口.
类总是派生自用户选择的另一个类,他们还可以派生自人一多个接口.