- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
112 基类的初始化
面向对象程序设计 第十一章 继承性 课程内容 11.1 继承 11.1.1 基本概念 在定义类A时,若它使用了一个类B(已定义)的部分或全部成员,则称类A继承了类B,或由类B派生出类A。并称类B为基类或父类,类A为派生类或子类。一个派生类又可以作为另一个类的基类。 两个类之间要具有继承关系,它们必须满足: (1) 有共同的属性或操作。 (2) 有细微的差别。 11.1 继承 11.1.1 基本概念 当一个类由一个基类派生时,称为单一继承;当一个类由多于一个基类派生时,称为多重继承。 11.1.2 单一继承 从一个基类派生出子类的一般格式为: class 派生类名 : Access 基类名 { … //类体 } ; 11.1 继承 11.1.2 单一继承 其中,Access用于规定基类中的成员在派生类中的访问权限,当它为public时,称该派生为公有派生;为private时,称该派生为私有派生;为protected时,称该派生为保护派生。如省略访问权限时,系统约定为private。 通过继承关系,派生类只能继承基类中的公有成员和保护成员,而不能继承基类中的私有成员。 11.1 继承 11.1.2 单一继承 引进protected类型成员的目的就是使基类的一些成员能够被它的派生类所继承,同时又不破坏类的封装性。 另外,下列成员不能被继承:构造函数和析构函数、友元关系、重载的new和delete运算符。 11.1 继承 11.1.2 单一继承 1.公有派生 公有派生时,派生类中通过继承关系得到的基类中的成员都保持原来的访问权限。 此时,派生类中通过继承关系得到的成员还可以被它的子类所继承。 【例11.1】 11.1 继承 11.1.2 单一继承 2.私有派生 对于私有派生,派生类中通过继承得到的基类中的公有成员和保护成员均变为私有。 通过私有派生得到的派生类再派生出子类时,通过继承得到的基类成员不能被它的子类所继承。 例11.2 11.1 继承 11.1.2 单一继承 3.保护派生 对于保护派生,基类中的公有成员和保护成员在派生类中均变为保护成员,它们仍然可被它的子类所继承。 11.1.3 多重继承 由多个基类派生出一个子类的一般格式为: class 类名: Access类名1 , … , Access类名n{……} ; 11.1 继承 11.1.3 多重继承 Access的含义与规则与单一继承相同,这些基类不能相同,即任一基类在派生类中只能被继承一次。 注意,各基类前的Access的只限于本基类。 【例11.3】 11.2 基类的初始化 在创建派生类对象时,首先调用基类构造函数,然后再调用派生类构造函数。当撤消派生类对象时,析构函数的调用次序与构造函数的调用次序相反。 在创建派生类时可以向基类构造函数传递参数,称为初始化基类成员。 一般格式为: 派生类名::派生类名(args):基类名1(arg1)《,…,基类名n(argn)》 { … } //派生类构造函数 注意这种方法与对象成员初始化的异同。 11.2 基类的初始化 如果基类中没有缺省参数值的构造函数,则必须通过上述方式向相应的基类的构造函数传递参数。 【例11.4】 构造函数的调用顺序只与派生类继承基类的顺序有关,而与初始化成员列表中构造函数顺序无关。 必须注意,一个类的构造函数只能对它的直接基类的构造函数传递实参。 【例11.5】 11.2 基类的初始化 基类、派生类、对象成员的构造函数的调用次序如下: 11.2 基类的初始化 析构函数的调用次序相反。 【例11.6】 * 课程 要求 课程 内容 课程 练习 参考 书目 课程要求 参考书目 返回首页 基类的初始化 继承 prev next back prev next back prev next back prev next back prev next back prev next back prev next back prev next back prev next back prev next back prev next back 基类的基类的构造函数 基类对象成员的构造函数 基类构造函数 派生类对象成员的构造函数 派生类的构造函数 … 图11-3 创建派生类对象时构造函数的调用次序 prev next back
文档评论(0)