第5章节继承与派生.ppt

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

第五章 继承与派生 面向对象程序设计有四个主要特点:抽象、封装、继承和多态性。这章主要学习有关继承的知识,在第六章学习多态性。 5.1 继承与派生的概念 5.2派生类的声明方式 5.3派生类的构成 5.4派生类成员的访问属性 类型兼容规则 5.5派生类的构造函数和析构函数 5.6多重继承 5.1 继承与派生的概念 C++的继承机制实现软件可重用。有时两个类的内容基本相同或有一部分相同。例如已声明了类student: class Student { private : int num; string name; char sex; public: void display( ) {coutnum: numendl; coutname: nameendl; coutsex: sexendl;} }; 如果另一个部门除了需要已有的数据外,还需要地址信息,你可以再声明另一个类 class Student1 {private : int num; string name; char sex; char addr[20]; public: void display() { coutnum: numendl; coutname: nameendl; coutsex: sexendl; cout address: addrendl;} }; 可以看到新类中大部分成员是原来已有的。人们自然会想到能否利用原来声明的类student,加上新内容即可,以减少重复的工作。这就引出C++的继承机制。 所谓继承是在已存在的类A 的基础上建立一个新类B。类A称为基类或父类,类B 称作派生类或子类。子类从父类获得其已有的特性,这种现象称作类的继承。从另一个角度看从父类产生子类,称作类的派生。 5.2 派生类的声明方式 使用派生类要先声明,声明的格式为 class 派生类名: [继承方式] 基类名 { 派生类新增成员声明 } ; 继承方式包括:public、private、protected。如果省略,系统默认为private。 例:假定已经声明一个基类student,在它基础上通过单继承建立一个派生类student1: class Student1: public Student { private: int age; string addr; public: void display_1() { cout age: ageendl; cout address: addrendl;} } ; 5.3 派生类的构成 派生类中的成员包括从基类继承过来的成员和自己增加的成员。继承基类成员体现了同一基类的派生类都具有的共性,而新增加的成员体现了派生类的个性。 (1)从基类接收成员。 派生类将基类除构造函数和析构函数外的所有成员接收过来。 (2)调整从基类接收的成员。 一方面可以通过继承方式改变基类成员在派生类中的访问属性,另一方面可以在派生类中声明一个与基类成员同名的成员屏蔽基类的同名成员,注意如是成员函数不仅要函数名相同,而且函数的参数也要相同,屏蔽的含义是用新成员取代旧成员。 (3)在声明派生类时增加成员,它体现了派生类对基类功能的扩充。 (4)在声明派生类时,还要自己定义派生类的构造函数。 5.4 派生类成员的访问属性 派生类中包含了基类成员和派生类成员,就产生了这两部分成员的关系和访问属性的问题。这个关系由基类成员的访问属性和派生类的继承方式组合决定。 5.4.1 公有继承 5.4.2 私有继承 5.4.3 保护成员和保护继承 5.4.4 多级派生时的访问属性 5.4.1 公用继承 当派生类的继承方式为public(公有)属性时,在派生类中,基类的公有成员和保护成员在派生类中的访问属性没有变化,即分别作为派生类的公有成员和保护成员,派生类的成员可以直接访问它们。但是,派生类的成员无法直接访问基类的私有成员。保护私有成员是一条重要的原则。 class Student // 声明基类 {private : int num; string name; char sex; public: void get_value() {cinnu

文档评论(0)

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

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

1亿VIP精品文档

相关文档