- 12
- 0
- 约1.07万字
- 约 46页
- 2019-01-08 发布于湖北
- 举报
第5章面向对象的高级编程 5.1 类的继承 继承——面向对象的程序设计极其重要的特性,它是指建立一个新的类,新类从一个或多个已定义的父类(基类)中继承已有的成员,并可以重新定义或添加新的成员,从而建立类的层次结构。例如交通工具的层次结构如图5-1所示。 5.1 类的继承 交通工具是一个基类(也称做父类),通常情况下所有交通工具所共同具备的特性是速度与额定载人的数量,按照常规继续给交通工具细分类的时候,有汽车类、火车类和飞机类等等,汽车类、火车类和飞机类同样具备速度和额定载人数量这样的特性,而这些特性是所有交通工具所共有的,那么当建立汽车类、火车类和飞机类的时候我们无需再定义基类已经有的数据成员,而只需要描述汽车类、火车类和飞机类所特有的特性即可。 5.1 类的继承 5.1.1 继承 一个类可以从它的父类(基类)继承成员。继承意味着这个类隐含地包含除了构造函数和析构函数的父类的所有成员。继承常用于在一个现有父类的基础上的功能扩展,往往是我们将几个类中相同的成员提取出来放在父类中实现,然后在各个子类(派生类)中加以继承。 1.继承特点 继承的重要性质如下: C#的继承是单一继承,不允许C++中的多重继承载,即只能有一个父类。 C#的继承是可传递的。如果C类从B类派生,并且B类从A类派生,那么C类继承在B类中声明的成员同时也继承载A中声明的成员。 5.1 类的继承 2.继承的定义格式 继承的定义格式如下: [访问修饰符] class 派生类名 [:父类类名] { 派生类新定义成员 } C#中派生类可以从它的基类中继承字段、属性、方法、事件、索引器等。实际上除了构造函数和析构函数,派生类隐式地继承了基类的所有成员。 5.1 类的继承 3.继承的可见性 在C#中通过继承,子类将拥有除父类的构造函数和析构函数以外的所有的成员。注意这里的“拥有”和“可见性”是两个概念。拥有某个成员是指该成员确确实实地存在于该类中,但如果该成员的访问权限不允许该成员在继承的子类中可见(可访问,比如private,internal),我们将不能在子类中对他们进行操作但这不表示他们不存在。下面的例子清晰地说明了这一点: 5.1 类的继承 下面的例子清晰地说明在子类中print( )方法调用父类的方法print成员: public class ColorBox: Box { private int color; public void SetColor(int c) { color=c; } new public void print( ) { base.print(); //在子类中调用父类的方法print Console.WriteLine(ColorBox color: {0}, color); } } 5.1 类的继承 4. 按次序调用构造函数和析构函数 前面介绍过,构造函数的作用是对类中的成员进行初始化。派生类的数据成员是由基类中的数据成员和派生类中新增的数据成员共同构成。而在继承机制下,构造函数不能够被继承。因此,对继承过来的基类成员的初始化工作也得由派生类的构造函数完成。也就是说在定义派生类的构造函数时,既要初始化派生类新增数据,又要初始化基类的成员。与一般非派生类相同,系统会为派生类定义一个默认(无参数、无数据成员初始化代码)构造函数用于完成派生类对象创建时的内存分配操作。 5.1 类的继承 5.1.2 抽象类和密封类 我们可以用类修饰关键字abstract和sealed来控制类继承时的行为。 1.抽象类 一般用于为子类提供公共接口。在声明类时,使用abstract修饰符则表示该类为抽象类。使得该类只能被子类继承,而不能被实例化。抽象类可以被抽象类所继承,结果仍是抽象类。 5.1 类的继承 抽象类可以包含抽象方法、抽象访问器和存在非抽象的方法。从抽象类派生的非抽象类必须包括继承的所有抽象方法的实现。 在方法声明中使用abstract修饰符以指示方法不包含实现的,即为抽象方法。因为抽象方法声明不提供实际的实现,所以没有方法体;方法声明只是以一个分号结束,并且在签名后没有大括号{}。 抽象方法具有以下特性: 只允许在抽象类中使用抽象方法声明,一个类中可以包含一个或多个抽象方法。 声明一个抽象方法使用abstract关键字。抽象方法是隐式的虚方法。 抽象方法实现在非抽象派生类提供一个重写方法,实现重写抽象方法用override关键字。 在抽象方法声明中使用static或virtual修饰符是错误的。 5.2 多态 在类的继承中,C#允许在基类与派生类中声明具有同名的方法,而且同名的方法可以有不同的代码,也就是说在基类与派生类的相同功能中可以有不同的具体实现,从而为解决同一问题提供
您可能关注的文档
最近下载
- 实习2b-geodas软件及演示数据geodas4x_manual_new20081006.pdf
- 影像投影仪点检表.doc VIP
- fotile方太 JZY T R-HL6G型燃气灶 说明书.pdf
- 五年级上册英语沪教牛津版期末测试卷 .doc VIP
- 高考数学三年(2023-2025年)真题《不等式》专题汇编含答案.docx
- 思仪 3680AB天馈线测试仪用户手册.pdf VIP
- 某县纪委书记、监委主任2025年度民主生活会对照检查材料.docx VIP
- 广东省深圳市南山区2023-2024学年七年级上学期期末语文试题.docx VIP
- MZS-30自动苏生器使用说明书.pdf VIP
- 围孕期叶酸营养管理指南.pdf VIP
原创力文档

文档评论(0)