(中职)编程语言基础------C++模块8教学课件.ppt
《(中职)编程语言基础------C++模块8教学课件.ppt》由会员分享,可在线阅读,更多相关《(中职)编程语言基础------C++模块8教学课件.ppt(95页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、YCF正版可修改PPT(中职)编程语言基础-C+模块8教学课件模块模块8继承与派生继承与派生任务任务1继承概述继承概述任务任务2派生类派生类任务任务3单继承单继承任务任务4多继承多继承任务任务5派生关系中的二义性派生关系中的二义性任务任务6虚基类虚基类返回任务任务1继承概述继承概述8.1.1 继承继承继承是现实世界普遍存在的现象。例如,子女会继承父母的特点,同继承是现实世界普遍存在的现象。例如,子女会继承父母的特点,同继承是现实世界普遍存在的现象。例如,子女会继承父母的特点,同继承是现实世界普遍存在的现象。例如,子女会继承父母的特点,同时又有自己的特点。对老产品进行改进形成新产品,新产品继承老
2、产时又有自己的特点。对老产品进行改进形成新产品,新产品继承老产时又有自己的特点。对老产品进行改进形成新产品,新产品继承老产时又有自己的特点。对老产品进行改进形成新产品,新产品继承老产品的一些特征,同时又有新的改进。继承也被用于程序设计中。通过品的一些特征,同时又有新的改进。继承也被用于程序设计中。通过品的一些特征,同时又有新的改进。继承也被用于程序设计中。通过品的一些特征,同时又有新的改进。继承也被用于程序设计中。通过继承可以在原有类的基础上建立新类,新类继承原有类的内容,使程继承可以在原有类的基础上建立新类,新类继承原有类的内容,使程继承可以在原有类的基础上建立新类,新类继承原有类的内容,使
3、程继承可以在原有类的基础上建立新类,新类继承原有类的内容,使程序代码可以重用,提高程序设计效率。序代码可以重用,提高程序设计效率。序代码可以重用,提高程序设计效率。序代码可以重用,提高程序设计效率。继承是一个进程,通过继承,一个对象可以获得另一个对象的属性。继承是一个进程,通过继承,一个对象可以获得另一个对象的属性。继承是一个进程,通过继承,一个对象可以获得另一个对象的属性。继承是一个进程,通过继承,一个对象可以获得另一个对象的属性。更严格地说,一个对象可以继承属性的集合,并可向其中加人属于自更严格地说,一个对象可以继承属性的集合,并可向其中加人属于自更严格地说,一个对象可以继承属性的集合,并
4、可向其中加人属于自更严格地说,一个对象可以继承属性的集合,并可向其中加人属于自己的一些特征。在己的一些特征。在己的一些特征。在己的一些特征。在C+C+语言中,继承是一个十分重要的概念,因为继语言中,继承是一个十分重要的概念,因为继语言中,继承是一个十分重要的概念,因为继语言中,继承是一个十分重要的概念,因为继承允许一个对象支持多层分类的概念。很多信息通过多层分类变得容承允许一个对象支持多层分类的概念。很多信息通过多层分类变得容承允许一个对象支持多层分类的概念。很多信息通过多层分类变得容承允许一个对象支持多层分类的概念。很多信息通过多层分类变得容易管理。易管理。易管理。易管理。)下一页返回任务任
5、务1继承概述继承概述例如例如例如例如:楼房是建筑物中的一部分,建筑物又是结构的一部分,结构又是楼房是建筑物中的一部分,建筑物又是结构的一部分,结构又是楼房是建筑物中的一部分,建筑物又是结构的一部分,结构又是楼房是建筑物中的一部分,建筑物又是结构的一部分,结构又是建造这一概念中的一部分。在这种情况下,子类继承了父类的所有属建造这一概念中的一部分。在这种情况下,子类继承了父类的所有属建造这一概念中的一部分。在这种情况下,子类继承了父类的所有属建造这一概念中的一部分。在这种情况下,子类继承了父类的所有属性,并加人了子类所特有的属性。如果不使用多层分类的概念,对每性,并加人了子类所特有的属性。如果不使
6、用多层分类的概念,对每性,并加人了子类所特有的属性。如果不使用多层分类的概念,对每性,并加人了子类所特有的属性。如果不使用多层分类的概念,对每个对象的清晰描述都要包括其全部属性。而采用继承来描述一个对象个对象的清晰描述都要包括其全部属性。而采用继承来描述一个对象个对象的清晰描述都要包括其全部属性。而采用继承来描述一个对象个对象的清晰描述都要包括其全部属性。而采用继承来描述一个对象时,只需在通用类特征的基础上添加该对象的一些特有属性即可。这时,只需在通用类特征的基础上添加该对象的一些特有属性即可。这时,只需在通用类特征的基础上添加该对象的一些特有属性即可。这时,只需在通用类特征的基础上添加该对象
7、的一些特有属性即可。这样一来,由继承得到的对象是惟一的,因此,继承在面向对象程序设样一来,由继承得到的对象是惟一的,因此,继承在面向对象程序设样一来,由继承得到的对象是惟一的,因此,继承在面向对象程序设样一来,由继承得到的对象是惟一的,因此,继承在面向对象程序设计中的作用十分重要。计中的作用十分重要。计中的作用十分重要。计中的作用十分重要。类的继承是类的继承是类的继承是类的继承是C+C+语言的一种重要机制,该机制自动为一个类提供来自语言的一种重要机制,该机制自动为一个类提供来自语言的一种重要机制,该机制自动为一个类提供来自语言的一种重要机制,该机制自动为一个类提供来自另一个类的操作和数据结构。
8、继承可以使程序设计人员在一个一般类另一个类的操作和数据结构。继承可以使程序设计人员在一个一般类另一个类的操作和数据结构。继承可以使程序设计人员在一个一般类另一个类的操作和数据结构。继承可以使程序设计人员在一个一般类的基础上很快建立一个新的类,而不必从零开始设计每个类。的基础上很快建立一个新的类,而不必从零开始设计每个类。的基础上很快建立一个新的类,而不必从零开始设计每个类。的基础上很快建立一个新的类,而不必从零开始设计每个类。)上一页 下一页返回任务任务1继承概述继承概述8.1.2 继承的相关说明继承的相关说明关于继承的几点说明。关于继承的几点说明。关于继承的几点说明。关于继承的几点说明。(1
9、)(1)如果子类继承了父类,则子类自动具有父类的全部数据成员如果子类继承了父类,则子类自动具有父类的全部数据成员如果子类继承了父类,则子类自动具有父类的全部数据成员如果子类继承了父类,则子类自动具有父类的全部数据成员(数数数数据结构据结构据结构据结构)和成员函数和成员函数和成员函数和成员函数(功能功能功能功能););但是,子类对父类的成员的访问有所限制。但是,子类对父类的成员的访问有所限制。但是,子类对父类的成员的访问有所限制。但是,子类对父类的成员的访问有所限制。(2)(2)子类可以定义自己的成员子类可以定义自己的成员子类可以定义自己的成员子类可以定义自己的成员:数据成员和成员函数。数据成员
10、和成员函数。数据成员和成员函数。数据成员和成员函数。(3)(3)基类、派生类或父类、子类都是相对的。一个类派生出的新的类基类、派生类或父类、子类都是相对的。一个类派生出的新的类基类、派生类或父类、子类都是相对的。一个类派生出的新的类基类、派生类或父类、子类都是相对的。一个类派生出的新的类就是派生类。派生类一也可以被其他类继承,这个派生类同时一也是就是派生类。派生类一也可以被其他类继承,这个派生类同时一也是就是派生类。派生类一也可以被其他类继承,这个派生类同时一也是就是派生类。派生类一也可以被其他类继承,这个派生类同时一也是基类。基类。基类。基类。继承类别包括公有继承、私有继承和保护继承。继承类
11、别包括公有继承、私有继承和保护继承。继承类别包括公有继承、私有继承和保护继承。继承类别包括公有继承、私有继承和保护继承。上一页 下一页返回任务任务1继承概述继承概述8.1.3 类的继承方式类的继承方式1.1.公有继承公有继承公有继承公有继承派生时用派生时用派生时用派生时用publicpublic作继承方式。作继承方式。作继承方式。作继承方式。基类的公有段基类的公有段基类的公有段基类的公有段(public)(public)成员被继承为公有的。成员被继承为公有的。成员被继承为公有的。成员被继承为公有的。基类的私有段基类的私有段基类的私有段基类的私有段(private)(private)成员在派生类
12、中不可见。成员在派生类中不可见。成员在派生类中不可见。成员在派生类中不可见。基类的保护段基类的保护段基类的保护段基类的保护段(protected)(protected)成员被继承为保护的。成员被继承为保护的。成员被继承为保护的。成员被继承为保护的。2.2.私有继承私有继承私有继承私有继承派生时用派生时用派生时用派生时用privateprivate作继承方式。作继承方式。作继承方式。作继承方式。基类的公有段基类的公有段基类的公有段基类的公有段(public)(public)成员被继承为私有的。成员被继承为私有的。成员被继承为私有的。成员被继承为私有的。基类的私有段基类的私有段基类的私有段基类的私
13、有段(private)(private)成员在派生类中不可见。成员在派生类中不可见。成员在派生类中不可见。成员在派生类中不可见。基类的保护段基类的保护段基类的保护段基类的保护段(protected)(protected)成员被继承为私有的。成员被继承为私有的。成员被继承为私有的。成员被继承为私有的。上一页 下一页返回任务任务1继承概述继承概述3.3.保护继承保护继承保护继承保护继承派生时用派生时用派生时用派生时用protectedprotected作继承方式。作继承方式。作继承方式。作继承方式。基类的公有段基类的公有段基类的公有段基类的公有段(public)(public)成员被继承为保护的。
14、成员被继承为保护的。成员被继承为保护的。成员被继承为保护的。基类的私有段基类的私有段基类的私有段基类的私有段(private)(private)成员在派生类中不可见。成员在派生类中不可见。成员在派生类中不可见。成员在派生类中不可见。基类的保护段基类的保护段基类的保护段基类的保护段(protected)(protected)成员被继承为保护的。成员被继承为保护的。成员被继承为保护的。成员被继承为保护的。注意以下几点。注意以下几点。注意以下几点。注意以下几点。)(1)(1)无论哪种继承方式,基类中的无论哪种继承方式,基类中的无论哪种继承方式,基类中的无论哪种继承方式,基类中的privatepriv
15、ate成员在派生类中都是不可见的。成员在派生类中都是不可见的。成员在派生类中都是不可见的。成员在派生类中都是不可见的。换句话说,基类中的换句话说,基类中的换句话说,基类中的换句话说,基类中的privateprivate成员不允许外部函数或派生类中的任何成成员不允许外部函数或派生类中的任何成成员不允许外部函数或派生类中的任何成成员不允许外部函数或派生类中的任何成员访问。员访问。员访问。员访问。上一页 下一页返回任务任务1继承概述继承概述(2 private(2 private派生确保基类中的方法只可以让派生类对象中的方法间接派生确保基类中的方法只可以让派生类对象中的方法间接派生确保基类中的方法只
16、可以让派生类对象中的方法间接派生确保基类中的方法只可以让派生类对象中的方法间接使用,而不能被外部使用。使用,而不能被外部使用。使用,而不能被外部使用。使用,而不能被外部使用。(3)public(3)public派生使得派生类对象和外部都可以直接使用基类中的方派生使得派生类对象和外部都可以直接使用基类中的方派生使得派生类对象和外部都可以直接使用基类中的方派生使得派生类对象和外部都可以直接使用基类中的方法,除非这些方法已被重新定义。法,除非这些方法已被重新定义。法,除非这些方法已被重新定义。法,除非这些方法已被重新定义。(4)protected(4)protected成员是一种血缘关系内外有别的成
17、员,它对派生对象成员是一种血缘关系内外有别的成员,它对派生对象成员是一种血缘关系内外有别的成员,它对派生对象成员是一种血缘关系内外有别的成员,它对派生对象来说,是公开成员,可以访问来说,是公开成员,可以访问来说,是公开成员,可以访问来说,是公开成员,可以访问;对血缘外部来讲,和对血缘外部来讲,和对血缘外部来讲,和对血缘外部来讲,和privateprivate成员一样成员一样成员一样成员一样被隐蔽。被隐蔽。被隐蔽。被隐蔽。上一页 下一页返回任务任务1继承概述继承概述 (5)private(5)private派生使得基类的非私有成员都成为派生类中的私有成员派生使得基类的非私有成员都成为派生类中的私
18、有成员派生使得基类的非私有成员都成为派生类中的私有成员派生使得基类的非私有成员都成为派生类中的私有成员;protected;protected派生使基类中的非私有成员的访问属性在派生类中都降为派生使基类中的非私有成员的访问属性在派生类中都降为派生使基类中的非私有成员的访问属性在派生类中都降为派生使基类中的非私有成员的访问属性在派生类中都降为保护的保护的保护的保护的publicpublic派生使得基类的非私有成员的访问属性在派生类中保持派生使得基类的非私有成员的访问属性在派生类中保持派生使得基类的非私有成员的访问属性在派生类中保持派生使得基类的非私有成员的访问属性在派生类中保持不变。不变。不变。
19、不变。不同继承方式的结果见不同继承方式的结果见不同继承方式的结果见不同继承方式的结果见表表表表8-18-1.上一页返回任务任务2派生类派生类8.2.1 派生类的定义派生类的定义 一般情况下,继承的进程起源于一个基类的定义,基类定义了其所有一般情况下,继承的进程起源于一个基类的定义,基类定义了其所有一般情况下,继承的进程起源于一个基类的定义,基类定义了其所有一般情况下,继承的进程起源于一个基类的定义,基类定义了其所有派生类的公有属性。从本质上讲,基类具有同一类集合中的公共属性,派生类的公有属性。从本质上讲,基类具有同一类集合中的公共属性,派生类的公有属性。从本质上讲,基类具有同一类集合中的公共属
20、性,派生类的公有属性。从本质上讲,基类具有同一类集合中的公共属性,派生类继承了这些属性,并且增加了自己特有的属性。从任何已存在派生类继承了这些属性,并且增加了自己特有的属性。从任何已存在派生类继承了这些属性,并且增加了自己特有的属性。从任何已存在派生类继承了这些属性,并且增加了自己特有的属性。从任何已存在的类继承的实质就是建造新的派生类。一也就是说,类继承可以从一的类继承的实质就是建造新的派生类。一也就是说,类继承可以从一的类继承的实质就是建造新的派生类。一也就是说,类继承可以从一的类继承的实质就是建造新的派生类。一也就是说,类继承可以从一个类即基类中继承该基类的成员,并增加新的成员。个类即基
21、类中继承该基类的成员,并增加新的成员。个类即基类中继承该基类的成员,并增加新的成员。个类即基类中继承该基类的成员,并增加新的成员。继承其他类属性的类称为派生类,又称为子类。那么在原有类基础继承其他类属性的类称为派生类,又称为子类。那么在原有类基础继承其他类属性的类称为派生类,又称为子类。那么在原有类基础继承其他类属性的类称为派生类,又称为子类。那么在原有类基础上建立的新类也可以称之为派生类或子类,原有类称为子类的父类或上建立的新类也可以称之为派生类或子类,原有类称为子类的父类或上建立的新类也可以称之为派生类或子类,原有类称为子类的父类或上建立的新类也可以称之为派生类或子类,原有类称为子类的父类
22、或基类,一也可称为超类。子类和父类形成类的层次和继承关系。由于基类,一也可称为超类。子类和父类形成类的层次和继承关系。由于基类,一也可称为超类。子类和父类形成类的层次和继承关系。由于基类,一也可称为超类。子类和父类形成类的层次和继承关系。由于子类在父类的基础上建立,因此子类继承了父类的特性和功子类除了子类在父类的基础上建立,因此子类继承了父类的特性和功子类除了子类在父类的基础上建立,因此子类继承了父类的特性和功子类除了子类在父类的基础上建立,因此子类继承了父类的特性和功子类除了拥有父类的特性和功能外,还可以增加自己的特性和功能。拥有父类的特性和功能外,还可以增加自己的特性和功能。拥有父类的特性
23、和功能外,还可以增加自己的特性和功能。拥有父类的特性和功能外,还可以增加自己的特性和功能。下一页返回任务任务2派生类派生类C+C+中定义派生类的语法格式如下中定义派生类的语法格式如下中定义派生类的语法格式如下中定义派生类的语法格式如下:classclass:新增私有成员声明语句列表新增私有成员声明语句列表新增私有成员声明语句列表新增私有成员声明语句列表public:public:新增公有成员声明语句列表新增公有成员声明语句列表新增公有成员声明语句列表新增公有成员声明语句列表protected:protected:新增保护成员声明语句列表新增保护成员声明语句列表新增保护成员声明语句列表新增保护成
24、员声明语句列表;上一页 下一页返回任务任务2派生类派生类“继承方式继承方式继承方式继承方式”即派生类的访问控制方式,用于控制基类中声明的成员即派生类的访问控制方式,用于控制基类中声明的成员即派生类的访问控制方式,用于控制基类中声明的成员即派生类的访问控制方式,用于控制基类中声明的成员在多大的范围内能被派生类的用户访问。每一个继承方式,只对紧随在多大的范围内能被派生类的用户访问。每一个继承方式,只对紧随在多大的范围内能被派生类的用户访问。每一个继承方式,只对紧随在多大的范围内能被派生类的用户访问。每一个继承方式,只对紧随其后的基类进行限定。其后的基类进行限定。其后的基类进行限定。其后的基类进行限
25、定。继承方式包括继承方式包括继承方式包括继承方式包括3 3种种种种:公有继承公有继承公有继承公有继承public;public;私有继承私有继承私有继承私有继承private;private;保护继保护继保护继保护继承承承承protectedprotected。若不显式给出继承方式关键字,系统则默认为私有继承。若不显式给出继承方式关键字,系统则默认为私有继承。若不显式给出继承方式关键字,系统则默认为私有继承。若不显式给出继承方式关键字,系统则默认为私有继承(private(private。类的继承方式指定了派生类成员以及类外对象对于从基类。类的继承方式指定了派生类成员以及类外对象对于从基类。类
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编程 语言 基础 C+ 模块 教学 课件
限制150内