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

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

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
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:

您可能关注的文档

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档