C++ 课件 chapter5.ppt

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

第5章 继承 主要内容 继承性 继承 赋值兼容规则 派生类对基类成员函数的覆盖 多重继承 5.1 面向对象的重要特征:继承性 为什么要使用继承 现实世界中事物的继承性 5.1 面向对象的重要特征:继承性 为什么要使用继承 程序设计中的代码重用问题 5.2 继承 基本概念 假设有两个类:A和B,若类B继承类A,则属于类B中的对象具有类A的一切特征(包括属性和操作)。此时,称被继承类A为基类或父类;称继承类B为类A的派生类或子类。 继承就是一个新的类拥有全部被继承类的属性和服务。 5.2 继承 基本概念 类的继承具有传递性,一个系统中所有类按继承关系构成的结构图称作该系统的类层次或类结构。 5.2 继承 基本概念 直接派生类和间接派生类 直接基类和间接基类 5.2 继承 基本概念 基类产生派生类的方法 单重继承 只允许一个派生类从一个惟一的基类继承产生(即类层次中的所有类只允许有一个父类)。 多重继承 允许一个派生类从两个或两个以上的基类继承产生(即类层次中的所有类允许有一个以上的父类)。 5.2 继承 派生类的定义格式 在C++中继承反映了类之间一般和特殊的关系,继承是通过派生类来实现的。 派生类单重继承的定义格式: class 派生类名: [继承方式] 基类名 { 派生类数据成员和成员函数定义 } 5.2 继承 派生类的定义格式 派生类多重继承的定义格式: class 派生类名: [继承方式1] 基类名1, [继承方式2] 基类名2, … [继承方式n] 基类名n { 派生类数据成员和成员函数定义 } 5.2 继承 派生类的三种继承方式 继承方式表明派生类中新定义的成员函数对基类成员的访问权限。 公有继承 基类的public和protected成员将分别成为派生类的公有成员和保护成员(访问控制不变)。 私有继承 基类的public和protected成员继承到派生类后,都成为私有成员(访问控制变成private) 5.2 继承 派生类的三种继承方式 保护继承 基类的public和protected成员继承到派生类后,都成为保护成员(访问控制都变成protected)。 5.2 继承 例1: public 继承方式下类内和类外的访问权限 5.2 继承 5.2 继承 5.2 继承 5.2 继承 派生类的三种继承方式 小结1 在public继承方式下,派生类的成员函数可以访问基类和派生类中的保护成员,但外部程序中定义的派生类对象不可以访问基类和派生类中的保护成员。 5.2 继承 例2: private 继承方式下类内和类外的访问权限 5.2 继承 5.2 继承 5.2 继承 5.2 继承 5.2 继承 派生类的三种继承方式 小结2 在private继承方式下,外部程序中定义的派生类对象可以访问派生类中的公有成员,但不可以访问基类中的公有成员。 总结 在公有派生情况下,基类中所有成员的访问特性在派生类中维持不变; 在私有派生情况下,基类中所有成员在派生类中成为私有成员。 5.2 继承 存在问题 在一个无论是公有派生的还是私有派生的派生中,派生类都不能访问基类的私有成员。 派生类要使用基类的私有成员,只能通过调用基类的公有成员函数的方式实现(即使用基类所提供的接口)。 这种方式极不方便。 5.2 继承 解决方法 C++提供了protected成员,使派生类可以访问基类的保护成员。 保护成员可以被派生类的成员函数访问,但对外部程序是隐藏起来的。 5.2 继承 派生类的基类子对象 派生类对象组成 派生类中定义的成员变量和成员函数; 基类中定义的成员变量; 基类中除构造函数和析构函数以外的成员函数。 基类子对象 指基类中定义的成员变量。 5.2 继承 派生类的基类子对象 派生类的构造函数 基类中的构造函数不能够被继承。 派生类的构造函数除了要对派生类的成员变量进行初始化赋值外,还要对基类中的成员变量进行初始化。 5.2 继承 派生类的基类子对象 派生类构造函数一般格式 派生类构造函数名(参数表):基类构造函数(参数表) { //… } 或者 派生类构造函数名(参数表):基类构造函数(参数表),派生类初始化表{ } 其中:基类构造函数的参数,通常来源于派生类构造函数的参数表,也可以有常数值。 5.2 继承 例如: 5.2 继承 派生类的基类子对象 基类构造函数和派生类构造函数的调用顺序 例如: 5.2 继承 5.2 继承 派生类的析构函数 基类中的析构函数不能够被继承。 当派生类对象被删除时,派生类的析构函数将被自动调用。 系统在自动调用执行了派生类的析构函数后,还将自动调用执行基类的析构函数。 5.2 继承 例: 5.2 继承

文档评论(0)

asd522513656 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档