摘自c#本质论相关章节,供大家一起参考

一、c#中继承的类型分为两种
1、实现继承
所谓实现继承是指一个类型派生与一个基类型,拥有该基类型的所以成员字段和函数。当许多类型共享
一组重要功能时,这种类型的继承是非常有效的。
2、接口继承
所谓接口继承是指一个类型只继承了函数的签名,没有继承任何实现代码。在需要指定该类型具有某些
可用的特性时,最后使用这种类型的继承。
>>注意:c#不支持多重继承。

二、结构和类的区别
1、结构为值类型,类为引用类型。
2、结构不支持实现继承,类支持。但是它们都支持接口继承。
定义结构和类可以总结为:
* 结构总是派生于System.ValueType,它们还可以派生与任意多个接口。
* 类总是派生于用户选择的另一各类,它们还可以派生与任意多个接口。
>>注意:c#不支持私有继承,因为基类名上没有public或private限定符。

三、方法或属性
1、虚方法:基类函数声明为virtual,这个方法即为虚方法,那么该函数就可以在派生类中重写了。
2、属性也可被重写,只需在基类函数中声明为virtual即可。
3、c#当中默认函数是非虚拟的,但可以显式指定virtual(除构造函数以外)。
>>注意:成员字段和静态函数都不能声明为virtual,因为这个概念只对类中的实例函数有意义。

四、隐藏方法
1、如果签名相同的方法在基类和派生类中都进行了声明,但该方法没有声明为virtual 和
override,派生类方法就会隐藏基类方法。
2、要实现隐藏可以在派生类中的方法上加new修饰符。其实如果想避免这种冲突可以重命名
(如果不可能重命名了,那就加上这个关键字吧,^-^)

五、调用函数的基类版本
如果想要在派生类中调用基类中的方法,可以使用base.<methodname>()来调用基类中的方法。

六、抽象类和抽象函数
c#允许把类和函数声明为abstract,抽象类不能实例化,抽象函数也没有方法体,并且必须在非抽象
的派生类中被重写。显然抽象函数默认就是virtual的,如果提供该关键字,会报语法错误哦^-^!
如果一个类当中有抽象函数,那么该类必须为抽象类。

七、密封类和密封方法
c#允许把类和方法声明为sealed。对于类来说,这表示不能继承该类;对于方法来说,这表示不能重写该方法。

>>注意:不能把类型定义为protected、private和protected internal,因为这些修饰符对于包含在命名空间中的
类型来说是没有意义的。因此这些修饰符只能应用于成员。但是,可以用这些修饰符定义嵌套的类型(即
包含在其他类型中的类型),因为这种情况下,类型也具有成员的状态。

本文来自租赁宝网内部技术人员  参考网站:http://www.zulinbao.com

原文地址:https://www.cnblogs.com/systemxgl/p/1823762.html