摘自c#本质论相关章节,供大家一起参考
2010-09-11 08:44
204 查看
一、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
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
相关文章推荐
- 转帖-----我的WinCE5.0入门全过程,为了方便后来者,写了一天多,仅供大家参考!(开发环境建立+流驱动开发+相关资料)
- 2013年1月1日开始写ios&mac相关技术博文------大家一起努力
- Asp.Net中的正则表达式问题可以在此提问,今后大家一起研究!贴出基本语法参考
- Asp.Net中的正则表达式问题可以在此提问,今后大家一起研究!贴出基本语法参考
- 这篇文章主要为大家详细介绍了jQuery密码强度验证控件使用详解的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
- 要持续改进就需要总结反思,下面有些具体的方法供大家一起参考
- 在做Asp.Net开发的时候,经常会遇到页面乱码的问题,下面是在网上收集的相关资料,请大家参考:
- 转帖-----我的WinCE5.0入门全过程,为了方便后来者,写了一天多,仅供大家参考!(开发环境建立+流驱动开发+相关资料)
- 司法考试相关用书介绍,供大家参考
- 整理了以前的关于UNICODE编程相关文章,共享大家。
- C# 对XML文件的操作代码,与大家一起分享
- 大家来参考。MySQL多实例配置(一)
- 现在公开一个DHT网络爬虫网络爬虫供大家一起交流
- 现在公开一个DHT网络爬虫网络爬虫供大家一起交流
- 请大家一起呼吁媒体不要进行幸还者回忆性采访
- PHP5中文参考手册以及相关资源收集
- GOOGLE搜索从入门到精通(供大家参考)
- 转载的ASP.NET AJAX客户端框架相关知识,与大家分享。
- TP/RTCP(实时传输协议/实时传输控制协议)自定义的相关C结构(参考) 选择自 wgsnet 的 Blog
- 转载:OGRE一起学(四)OGRE API 参考 (chm 格式)