C#的继承

继承的类型:
有实现继承和接口继承

实现继承:
表示一个类型派生于一个基类型,它拥有该基类型的所有成员字段和函数。在实现继承中,派生类型采用基类型的每个函数的实现代码,除非在派生类型的定义中指定重写某个函数的实现代码。在需要给现有的类型添加功能,或许多相关的类型共享一组重要的公共功能时,这种类型的继承非常有用。

接口继承:
表示一个类型只继承了函数的签名,没有继承任何实现代码。在需要指定该类型具有某些可用的特性时,最好使用这种类型的继承。

多重继承:
一些语言支持所谓的“多重继承”,即一个类派生自多个类。使用多重继承的优点是有争议的:一方面,毫无疑问,可以使用多重继承编写非常复杂、但很紧凑的代码,如C++ATL库。另一方面,使用多重实现继承的代码常常很难理解和调试。如前所述,简化健壮代码的编写工作是开发C#的重要设计目标。因此,C#不支持多重实现继承。而C#又允许类型派生自多个接口一多重接口继承。这说明,C#类可以派生自另一个类和任意多个接口。更准确地说,因为System.Object是一个公共的基类,所以每个C#类都有一个基类,还可以有任意多个基接口。

结构和类:

分了结构和类。使用结构的一个限制是结构不支持继承,但每个结构都自动派生自System. ValueType。不能编码实现类型层次的结构,但结构可以实现接口。换言之,结构并不支持实现继承,但支持接口继承。定义结构和类可以总结为:.结构总是派生自System.ValueType,它们还可以派生自任意多个接口。类总是派生自System.Object或用户选择的另一个类,它们还可以派生自任意多个接口。

	虚方法:

把一个基类函数声明为virtual,就可以在任何派生类中重写该函数:
也可以把属性声明为virtual。对于虚属性或重写属性,语法与非虚属性相同,但要在定义中添加关键字virtual,
C#中虚函数的概念与标准OOP的概念相同:可以在派生类中重写虚函数。在调用方法时,会调用该类对象的合适方法。在C#中,函数在默认情况下不是虚拟的,但(除了构造函数以外)可以显式地声明为virtual。这遵循Cu+的方式,即从性能的角度来看,除非显式指定,否则函数就不是虚拟的。而在Java中,所有的函数都是虚拟的。但C#的语法与C1+的语法不同,因为C#要求在派生类的函数重写另一个函数时,要使用override关键字显式声明
重写方法的语法避免了C中很容易发生的潜在运行错误:当派生类的方法签名无意中与基类版本略有差别时,该方法就不能重写基类的方法。在C#中,这会出现一个编译错误,因为编译器会认为函数已标记为override,但没有重写其基类的方法。成员字段和静态函数都不能声明为virtual,因为这个概念只对类中的实例函数成员有意义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值