C#高级编程.第4章继
18页1、第4章 继 承第3章介绍了如何使用C#中的各个类,其重点是如何定义方法、构造函数、属性和单个类(或单个结构)中的其他成员。我们指出,所有的类最终都派生于System.Object类,但并没有说明如何创建继承类的层次结构。继承是本章的主题。我们将讨论C#和.NET Framework如何处理继承。本章的主要内容如下:继承的类型实现继承访问修饰符接口4.1 继承的类型首先介绍C#在继承方面支持和不支持的功能。4.1.1 实现继承和接口继承在面向对象的编程中,有两种截然不同的继承类型:实现继承和接口继承。实现继承:表示一个类型派生于一个基类型,拥有该基类型的所有成员字段和函数。在实现继承中,派生类型的每个函数采用基类型的实现代码,除非在派生类型的定义中指定重写该函数的实现代码。在需要给现有的类型添加功能,或许多相关的类型共享一组重要的公共功能时,这种类型的继承是非常有效的。例如第31章讨论的Windows Forms类。第31章也讨论了基类System.Windows.Forms.Control,该类提供了常用Windows控件的非常复杂的实现代码,第31章还讨论了许多其他的类,例如Syst
2、em. Windows.Forms.TextBox和System.Windows.Forms.ListBox,这两个类派生于Control,并重写了函数,或提供了新的函数,以实现特定类型的控件。接口继承:表示一个类型只继承了函数的签名,没有继承任何实现代码。在需要指定该类型具有某些可用的特性时,最好使用这种类型的继承。例如,某些类型可以指定从接口System.IDisposable(详见第12章)中派生,从而提供一种清理资源的方法Dispose()。由于某种类型清理资源的方式可能与另一种类型的完全不同,所以定义通用的实现代码是没有意义的,此时就适合使用接口继承。接口继承常常被看做提供了一种契约:让类型派生于接口,来保证为客户提供某个功能。在传统上,像C+这样的语言在实现继承方面的功能非常强大。实际上,实现继承是C+编程模型的核心。另一方面,VB6不支持类的任何实现继承,但因其底层的COM基础体系,所以它支持接口继承。在C#中,既有实现继承,也有接口继承。它们没有强弱之分,因为这两种继承都完全内置于语言中,因此很容易为不同的情形选择最好的体系结构。4.1.2 多重继承一些语言如C+支持所
3、谓的多重继承,即一个类派生于多个类。使用多重继承的优点是有争议的:一方面,毫无疑问,可以使用多重继承编写非常复杂、但很紧凑的代码,如C+ ATL库。另一方面,使用多重实现继承的代码常常很难理解和调试(这也可以从C+ ATL库中看出)。如前所述,使健壮代码的编写容易一些,是开发C#的重要设计目标。因此,C#不支持多重实现继承。而C#又允许类型派生于多个接口。这说明,C#类可以派生于另一个类和任意多个接口。更准确地说,因为System.Object是一个公共的基类,所以每个C#类(除了Object类之外)都有一个基类,还可以有任意多个基接口。4.1.3 结构和类第3章区分了结构(值类型)和类(引用类型)。使用结构的一个限制是结构不支持继承,但每个结构都自动派生于System.ValueType。实际上还应更仔细一些:不能建立结构的类型层次,但结构可以实现接口。换言之,结构并不支持实现继承,但支持接口继承。事实上,定义结构和类可以总结为:结构总是派生于System.ValueType,它们还可以派生于任意多个接口。类总是派生于用户选择的另一个类,它们还可以派生于任意多个接口。4.2 实现继承
4、如果要声明一个类派生于另一个类,可以使用下面的语法:class MyDerivedClass : MyBaseClass/ functions and data members here注意:这个语法非常类似于C+和Java中的语法,但是,C+程序员习惯于使用公共和私有继承的概念,要注意C#不支持私有继承,因此基类名上没有public或private限定符。支持私有继承会大大增加语言的复杂性,实际上私有继承在C+中也很少使用。如果类(或结构)也派生于接口,则用逗号分隔开基类和接口:public class MyDerivedClass : MyBaseClass, IInterface1, IInterface2/etc.对于结构,语法如下:public struct MyDerivedStruct : IInterface1, IInterface2/etc.如果在类定义中没有指定基类,C#编译器就假定System.Object是基类。因此下面的两段代码生成相同的结果:class MyClass : Object /derives from System.Object/etc. 和c
《C#高级编程.第4章继》由会员s9****2分享,可在线阅读,更多相关《C#高级编程.第4章继》请在金锄头文库上搜索。
企业人事行政管理工作个人总结(2篇).doc
小班社会爱清洁的小猫教案反思
安全事故协议书模板锦集九篇
麻醉科制度电子版汇总
化学实验教学方式(化学实验教学模式有哪些)
某工地质量目标管理与财务知识分析报告
《UML面向对象建模基础》习题答案
最新【苏教版】三年级上册数学:第5单元解决问题的策略课时作业第2课时 用画线段图的策略分析、解决问题
怎样提高小学生计算能力
液化天然气①NG汽车安全使用维修管理规定(参考)(1)
涂装前处理工艺流程及质量管理
舞弊审计相关习题
2023年湖南省长沙市望城区高塘岭街道月圆村社区工作人员考试模拟题含答案
科研优质课说课稿
在线商品销售网站的设计与实现
2022年医学生自我鉴定模板八篇
中渊WMS仓储物流管理系统在纺织行业的条形码解决方案
节能登记表
保卫科安全目标责任书
建设工程防水专业施工合同
2023-11-08 14页
2022-09-09 3页
2023-01-31 2页
2023-10-25 29页
2022-12-14 71页
2023-06-21 8页
2022-11-21 9页
2023-01-08 6页
2023-01-10 3页
2022-07-21 1页