网站大量收购独家精品文档,联系QQ:2885784924

第10章继承和生类.ppt

  1. 1、本文档共63页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10章继承和生类

第10章 继承和派生类 目的与要求 10.1 继承与派生 10.2 冲突、支配规则和赋值兼容性 10.3 虚基类 10.4 静态数据成员 本章小结 目的与要求 通过本章学习,应理解继承与派生的概念,掌握派生类的定义语句格式及使用方法。知道基类成员经公有或私有派生后在派生类中的访问权限。初步掌握冲突、支配规则、赋值兼容性的概念。了解虚基类的概念、虚基类的语句定义格式及使用方法。了解静态成员的定义格式、初始化方式及作用域。 10.1 继承与派生 继承:从已有类出发建立新的类,使新类部分或全部地继承已有类的成员。 派生:通过继承已有的一个或多个类产生一个新类称为派生。 10.1.1 继承与派生的基本概念 1.继承与派生的定义 在定义类B时,若使用类A的部分或全部成员,则称类B继承了类A,并称类A为基类或父类,称类B为派生类或子类。基类与派生类或父类与子类的关系可以用图表示。 2.单一继承 若派生类是由一个基类派生出来的,称为单一继承,如派生类Score是由一个基类Student派生出的,所以为单一继承。如图所示。 3.多重继承 若派生类由多个基类派生出,称为多重继承。如图所示。 10.1.2 派生类的定义 1.定义派生类的格式 class 派生类名:access基类名1 〔,…,access基类名n〕 {…}; 说明: (1)派生类由n个基类多重派生,当n=1时为单一继承。 (2)访问权限access={public、private与protected} 2.公有派生 若在定义派生类时,access为public,则定义公有派生。公有派生时,基类中所有成员在派生类中保持各个成员的访问权限。具体访问权限如下: (1)基类中public成员在派生类仍保持为public成员,所以在派生类内、外都可直接使用这些成员。 (2)基类中private成员属于基类私有成员,所以在派生类内、外都不能直接使用这些成员。只能通过该基类公有或保护成员函数间接使用基类中的私有成员。 公有派生 (3)基类中protected成员可在派生类中直接使用,但在派生类外不可直接访问这类成员,必须通过派生类的公有或保护成员函数或基类的成员函数才能访问。 【例10.1】 用学生档案类Student派生出学生成绩类Score。讨论基类中公有、私有与保护数据成员在派生类中访问权限的变化。 3.私有派生 若在定义派生类时,access为private则定义了私有派生。经过私有派生后: (1)基类中公有成员在派生类变为私有成员,在派生类内可以使用,而在派生类外不能直接使用。 (2)基类中保护成员在派生类变为私有成员,在派生类内可以使用,而在派生类外不能直接使用。 (3)基类中私有成员在派生类内、外都不能直接使用,必须通过基类公有函数使用。 10.1.3 派生类的构造函数与基类成员的初始化 1.派生类构造函数格式 派生类的构造函数由初始化基类数据成员构造函数与初始化派生类新增的数据成员构造函数组成。派生类构造函数的格式为: 派生类名::派生类名(形参表):基类构造函数名1(实参表1)〔,…,基类构造函数名n(实参表n)〕 {派生类构造函数体} 派生类构造函数格式 说明: (1)基类构造函数实参可以是表达式或派生类构造函数的形参。 (2)实参只与形参名有关,而与参数顺序无关。 (3)冒号后基类构造函数列表称为初始化成员列表。 派生类构造函数举例 【例10.2】多重派生实例。定义描述圆的 类Circle,定义描述高的类High,用描述圆 的类与描述高的类作为基类,多重派生出 圆柱体类Cylinder。讨论多重继承中基类成 员的初始化问题。 例程 2.建立对象时,构造函数的调用顺序 先调用基类构造函数,再调用派生类构造函 数。注意: (1)在派生类中并不能直接对基类的私有数据成 赋初始值,必须通过公有的构造函数进行初始化工作。 (2)基类构造函数的调用顺序取决于它们在派生类 中说明顺序,而与它们在派生类构造函数中的顺序无关。 3.撤消对象时,析构函数的调用顺序 在撤消派生类的对象时,析构函数的调用顺 序正好与构造函数的顺序相反。即:先调用派生 类的析构函数,再调用基类析构函数。 【例10.3】定义两个基类Base1与Base2,并由Base1与Base2派生出派生类Derive。编写程 序,输出派生类中构造函数与析构函数的调用关 系。

文档评论(0)

181****7127 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档