欢迎来到天天文库
浏览记录
ID:58891020
大小:170.50 KB
页数:64页
时间:2020-09-30
《C++程序设计第9章 继承与派生类ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第9章继承与派生类9.1继承的基本概念9.2访问控制9.3派生类的构造和析构函数9.4派生类成员的标识与访问9.5赋值兼容规则9.6程序举例教学目的1.理解继承的含义,掌握派生类的定义方法和实现;2.理解公有继承下基类成员对派生类成员和派生类对象的可见性,能正确地访问继承层次中的各种类成员;3.理解保护成员在继承中的作用,能够在适当的时候选择使用保护成员以便派生类成员可以访问基类的部分非公开的成员;4.理解虚函数在类的继承层次中的作用,虚函数的引入对程序运行时的影响,能够对使用虚函数的简单程序写出程序结果教学内容1.继承的基本概念2.继承的工作方式3.派生类
2、的构造4.成员访问控制5.类属类6.多重继承面向对象的程序设计中提供了类的继承机制,允许程序员在保持原有类特性的基础上,进行更具体、更详细的说明。以原有的类为基础产生新的类,我们就说新类继承了原有类的特征,也可以说是从原有类派生出新类。派生新类的过程一般包括吸收已有类的成员、调整已有类成员和添加新的成员三个步骤。本章围绕派生过程,着重讨论不同继承方式下的基类成员的访问控制问题、添加构造函数和析构函数;接着我们还将讨论在较为复杂的继承关系中的类成员的唯一标识和访问问题;最后给出类的继承实例。9.1继承的基本概念9.1.1继承与派生的实例类的继承和派生的层次结
3、构,可以说是人们对自然界中的事物进行分类、分析和认识的过程在程序设计中的体现。现实世界中的事物都是相互联系、相互作用的,人们在认识过程中,根据他们的实际特征,抓住其共同特性和细小差别,利用分类的方法进行分析和描述。比如对于交通工具的分类,见图9-1。这个分类树反映了交通工具的派生关系,最高层是抽象程度最高的,是最具有普遍和一般意义的概念,下层具有了上层的特性,同时加人了自己的新特征,而最下层是最为具体的。在这个层次结构中,由上到下,是一个具体化、特殊化的过程;由下到上,是一个抽象化的过程。上下层之间的关系就可以看作是基类与派生类的关系。9.1.2派生类的声明
4、在C++中,派生类的一般声明语法为:class派生类名:继承方式基类名1,继承方式基类名2,…,继承方式基类名n{派生类成员声明;};例如,假设基类Base1,Base2是已经声明的类,下面的语句声明了一个名为Dr1的派生类,该类从基类Base1,Base2派生而来:classDr1:publicBase1,privateBase2{public:Dr1();~Dr1();};声明中的“基类名”(如Base1,Base2)是已有的类的名称,“派生类名”是继承原有类的特性而生成的新类的名称(如Dr1)。一个派生类可以同时有多个基类,这种情况称为多继承,这时的派
5、生类同时得到了多个已有类的特征。上述例子就是一个多继承实例。一个派生类只有一个直接基类的情况,称为单继承。多继承和单继承时基类和派生类之间的关系可以用图9-2描述。单继承可以看作是多继承的一个最简单的特例,多继承可以看作是多个单继承的组合,它们之间的很多特性是相同的,我们的学习首先从简单的单继承开始。在派生过程中,派生出来的新类也同样可以作为基类再继续派生新的类,此外,一个基类可以同时派生出多个派生类。也就是说,一个类从父类继承来的特征也可以被其他新的类所继承,一个父类的特征,可以同时被多个子类继承。这样,就形成了一个相互关联的类的家族,有时也称作类族。在类
6、族中,直接参与派生出某类的基类称为直接基类,基类的基类甚至更高层的基类也称为间接基类,比如A类派生出B类,B类又派生出C类,则B类是C类的直接基类,A类是B类的直接基类,而A类可以称为C类的间接基类。在派生类的声明中,除了要指定基类外,还需要指定继承方式。继承方式规定了如何访问从基类继承的成员。在派生类的声明中,每一个“继承方式”只限定紧随其后的基类。继承方式关键字为public,protected和private,分别表示公有继承、保护继承和私有继承。如果不显式地给出继承方式关键字,系统的默认值就认为是私有继承(private)。类的继承方式指定了派生类成
7、员以及类外对象对于从基类继承来的成员的访问权限,这将在下一节详细介绍。9.1.3派生类生成过程在C++程序设计中,进行了派生类的声明之后,给出该类的成员函数的实现,整个类就算完成了,可以由它来生成对象进行实际问题的处理。仔细分析派生新类这个过程,我们实际是经历了三个步骤:吸收基类成员、改造基类成员、添加新的成员。面向对象的继承和派生机制,其最主要的目的是实现代码的重用和扩充。因此,吸收基类成员就是一个重用的过程,而对基类成员进行调整、改造以及添加新成员就是原有代码的扩充过程,二者是相辅相成的。1.吸收基类成员在C++的类继承中,第一步是将基类的成员全盘接收,
8、这样,派生类实际上就包含了它的所有基类中除构造和析构
此文档下载收益归作者所有