欢迎来到天天文库
浏览记录
ID:59412606
大小:878.50 KB
页数:139页
时间:2020-09-19
《《C++面向对象程序设计》_第5章 继承和派生ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章继承和派生5.1介绍5.2基本概念与语法5.3派生类成员的访问属性:公有继承、私有继承、保护继承、基类static成员的继承、派生类的using声明5.4派生类构造函数和析构函数:派生类构造函数、派生类析构函数、派生类复制构造函数、派生类和成员对象第5章继承和派生5.5多重继承5.6继承和组合5.7重载、隐藏、覆盖5.8C语言实现继承5.1介绍继承(inheritance)是软件重用的一种方式,程序员通过继承可以吸收已有类的数据和行为来创建新类,并可以添加新的数据和行为来增强类的功能。创建新类时,并不需要创建全新的数据和成员函数,我
2、们可以指明这个新类应当继承现有类的成员。此时,现有的类称为“基类”,继承实现的新类称为“派生类”。派生类代表了一组更加特殊化的对象,它包含了从基类继承来的行为,并进行了扩充。类是对现实中事物的抽象,类的继承和派生的层次结构则是对自然界中事物分类、分析的过程在程序设计中的体现。下图说明了某个公司雇员的派生关系。位于最高层的雇员其抽象程度最高,是最具一般性的概念。最下层抽象程度最低,最具体。从上层到下层是具体化的过程,从下层到上层是抽象话的过程。面向对象设计中上层与下层是基类与派生类的关系。依照面向对象的理念:当某个概念用语言的基本类型不能具
3、体表示时,就应当定义一个新的类型(class)。一个概念一般不是独立存在的,通常与其相关的概念共存,以此发挥更大的作用。当某个概念与其他概念之间存在关系时,应当在相应的类型之间也表示出这样的关系。类之间的关系主要有以下两种:(1)“hasa”:Acarhaswheels,engines,…(2)“isa”:AManagerisanEmployee.‘“hasa”的表示方式-聚集(Integration)classCar{Wheelws[4];Enginee[1];//...};孤立的类只能描述实体集合的特征同一性,而客观世界中实体集合的划
4、分通常还要考虑实体特征方面有关联的相似性。“相似”无非是既有共同点,又有差别:(1)内涵的相似性:在客观世界中具有一般——特殊的关系(isa)。例如:雇员(Employee)—经理(Manager)。(2)结构的相似性:具有相似的表示。例如:array、vector。方式1、重复定义共性来表示“isa”方式2、-将共性表示为一种类型来表示“isa”方式3、通过继承来表示“isa”除自己的成员以外,类Manager还拥有Employee类的成员。一个派生类被认为是从基类继承了基类的属性,所以这种关系被称为继承“hasa”关系即组合关系,通过
5、定义类的属性的方式实现的;“isa”关系即继承关系,通过类继承实现。如果你确定两件对象之间是is-a的关系,那么此时你应该使用继承。在实际应用中还会有“hasa”和“isa”两者同时用的情况,一个类在接口上表现为“isa”的继承关系,但在实现上又表现为“hasa”的组合关系(详见下章装饰模式)。关于基类和派生类的关系,可以表述为:派生类是基类的具体化,而基类则是派生类的抽象。使用继承必须满足的逻辑关系:如果写了一个基类A,又写了基类A的派生类B,那么要注意,“一个B对象也是一个A对象”这个命题从逻辑上成立,是A派生出B为合理派生的必要条件
6、。使用继承容易犯的错误:如果写了一个CMan类代表男人,后来又发现需要一个CWoman类来代表女人,仅仅因为CWoman类和CMan类有共同之处,就让CWoman类从CMan类派生而来,是不合理的。因为“一个女人也是一个男人”从逻辑上不成立。5.2基本概念与语法class<类名>:<继承方式><基类名1>,<继承方式><基类名2>,...{...}构造一个派生类包括以下3部分工作 :(1)从基类接收成员。派生类把基类全部的成员(不包括构造函数和析构函数)接收过来,也就是说是没有选择的,不能选择接收其中一部分成员,而舍弃另一部分成员。(2)
7、处理从基类接收的成员。接收基类成员是程序人员不能选择的,但是程序人员可以对这些成员作某些处理。(3)在声明派生类时增加的成员。这部分内容是很重要的,它体现了派生类对基类功能的扩展。要根据需要仔细考虑应当增加哪些成员,精心设计。例5.2#includeusingnamespacestd;classA{public:inta;intb;private:intc;protected:intd;};classB:publicA{intc;};main(){cout<<”sizeofAis”<8、sizeofBis”<
8、sizeofBis”<
此文档下载收益归作者所有