文档详情

面向对象程序设计及C++ 教学课件 作者 朱立华 朱建 俞琼 第4章_继承与派生.ppt

发布:2017-08-17约1.68万字共71页下载文档
文本预览下载声明
Basic of Basic 面向对象程序设计及C++ 主讲: 第4章 类的继承与派生 本章作业 作业本:P146~152页:一、二、三、四、五(1、2) 本章内容提要 类的继承与派生实现面向对象的继承性 派生类的定义方式及基类成员的在派生类中的访问属性、属性的调整方法 派生类的构造函数与析构函数的定义及调用方法,区别在单一继承与多重继承下的不同方式和要求 三种命名冲突问题及解决方案 虚基类的概念与作用 基类与公有派生类间的4种赋值兼容规则 本章内容安排 4.1 继承与派生的概念 4.2 派生类的构造函数与析构函数 4.3 同名冲突及其解决方案 4.4 虚基类 4.5 赋值兼容规则 4.6 本章小结 4.1.1 为什么要使用继承 继承性是面向对象程序设计的第二大特性,允许在既有类的基础上创建新类,新类可以继承既有类中的数据成员和成员函数,可以添加自己特有的数据成员和成员函数,还可以对既有类中的成员函数重新定义。 继承机制提高了代码的可重用性,使得类间具有了层次或等级,下层类继承了上层类,上层类派生了下层类。 称既有类为基类或父类,称新类为派生类或子类。 4.1.1 为什么要使用继承 继承普遍存在于生活中,比如:子女或多或少地从父母或是祖辈那里继承了相貌、行为举止方面的特性,同时又具有自己的新特点 继承关系也普遍存在于日常生活和客观事物中 下页的图展示了家具类、床类、沙发类等类的继承与派生关系 4.1.1 为什么要使用继承 4.1.1 为什么要使用继承 通过上图示例,理解下列3个问题: (1)基类与派生类的关系 基类与派生类反映了类之间的继承与派生关系。基类派生了派生类,派生类继承了基类 基类与派生类是相对而言的,最上层的一定是基类,最下层的一定是派生类,中间层的类既可以是基类又可以是派生类 基类与派生类的对应关系可以是一对一、一对多、多对一的关系 4.1.1 为什么要使用继承 (2)单一继承与多重继承 单一继承是指派生类只从一个基类继承而来 多重继承指派生类同时从两个或更多的基类继承而来 (3)多级继承 当类之间的继承关系超过两层时,就构成了多级继承 4.1.2 派生类的定义 派生类的定义格式如下: class 派生类名:[继承方式] 基类名1 [,[继承方式] 基类名2,…,[继承方式] 基类名n ] { 派生类新增的数据成员和成员函数定义 }; 说明: (1)定义派生类通常用关键字class,也可用struct,二者的区别是:用class定义派生类,默认的继承方式为private(私有继承方式),用struct定义派生类,默认的继承方式为public(公有继承方式),新增加的成员默认属性也是class对应private(私有)属性,struct对应public(公有)属性。 4.1.2 派生类的定义 (2)派生类名为合法的用户自定义标识符,一般用名词 (3)派生类名后必须跟冒号,冒号后面是继承方式和基类名,对于单一继承,只有一个基类名,对于多重继承,有多个基类名,彼此之间以逗号分隔,基类名不可缺省,继承方式可以使用缺省值 (4)继承方式指明了派生类是以什么方式继承基类,有3种继承方式:public(公有继承方式)、protected(保护继承方式)、private(私有继承方式) (5)继承方式不能被多个基类共享, 每个基类名前给出继承方式关键字,否则用默认值 4.1.2 派生类的定义 派生类新增成员说明包括新增加的数据成员和成员函数,可以有对基类成员的访问声明,还可以有对基类中已有成员函数的重新定义 (7)派生类的定义最后仍以分号作为结束标志 (8)特别强调:基类不能被派生类继承的两类函数是构造函数和析构函数 4.1.2 派生类的定义 教材的[例4.1]包含3个文件: 文件Student.h定义了学生类Student作为基类 文件Undergrad.h定义了Student类的派生类——本科生类Undergrad 文件li4_1.cpp 中定义了main函数,在其中定义了基类与派生类对象,并调用相应的成员函数完成一定的功能 具体程序请阅读教材或在VC++6下运行演示 该例中,Undergrad类为一个从基类Student公有继承的派生类,其成员的组成及属性如下页表所示 4.1.2 派生类的定义 4.1.2 派生类的定义 派生类中的成员由两部分组成:一部分从基类继承得到,另一部分本类新增加。派生类中新增成员的属性就是其定义时的属性,而从基类继承来的成员在派生类中的访问属性不一定与在基类中一样,这与派生方式有关。 另外,该程序上机编译时会有下面两条告警 (1)li4_1.cpp(19):warning C4183:SetValue:
显示全部
相似文档