C++程序设计教程:第十章 继承.ppt

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C++程序设计教程(第二版) 第十章 继承 Chapter 10 Inheritance 第十章内容 10.1 继承结构 10.1.1 类层次结构 宇宙万事万物都是分类分层的,解决问题可以从事物之间的上下关系中着手.这是继承引入程序设计的前提. 交通工具的类层次结构分析 继承是一个派生类在直接拥有基类全部资源的基础上,进行修改和增加的代码高度可重用的一个过程 相关概念: 基类和父类 子类和派生类 10.1.2 派生类对象结构 对于下面的继承关系: class Father{ int a,b; public:  // 成员函数 }; class Son: public Father{ int c; public: // 成员函数 }; 10.1 继承结构 派生类总是依附于基类,派生类对象中总是含有基类的成员;基类对象总是派生类对象的组成部分 在具体程序实现中,派生类对象中基类部分成员的空间安排并不一定是基类在前,派生类在后 派生类对象一定比基类对象大 10.2 访问父类成员 10.2.1 继承父类成员 派生类可以继承基类的所有成员 Public成员 Private成员 Protected成员 继承关系中派生类拥有基类成员的程序举例(f1001) 继承的高度代码重用机制和非继承的代码简单复制重用机制的效果对比 派生类对象可以在需要的场合下被理解为是基类对象 GraduateStudent gs; Students(gs); Student& t =gs; Student *t=&gs; 10.2 访问父类成员 10.2.2 类内访问控制 继承权限 继承后基类部分成员在派生类的内部和外部的不同作用权限 private基类成员在派生类中是不能直接访问的 protected基类成员在派生类中是可以直接访问的 public基类成员在派生类中时可以直接访问的 代码分析(p333) protected成员在继承过程中所发挥的重要角色:为了扩展临时功能 基类为了长远考虑,可以留下保护成员。但规范情况下派生类仅使用公共成员,而不使用任何保护成员 10.3 派生类的构造 class Student{ public: void display(); // ... }; class GraStudent:public Student{ public: void display() //overlap { Student ::display() ... } // ... }; void fn(){ GraStudent gs; gs.display(); } 10.4 继承方式 10.4.1 继承访问控制 三种继承权限 不同继承权限下基类的不同成员在继承后的派生类中的权限表现 程序举例(f1003) 10.4.2 调整访问控制 在派生类中对于可见的成员可以调整访问控制属性 程序举例(f1004) 成员权限总结 10.5 继承与组合 10.5.1 对象结构 组合:类中含有对象成员,称为组合式包含 继承:子类继承了父类,称为子类对象对父类对象的继承式包含 继承和组合都重用了类设计. 10.5 继承与组合 10.5.2 继承和组合的性质差异 继承和组合在物理结构上都是包含关系,但在性质上完全不同 继承关系中子类和基类的性质是相同的,属于同类。而且子类可以直接访问基类中的非private成员 组合关系中类对象和成员对象的性质是不同的,彼此之间独立。成员对象的任何数据都必须通过成员对象的操作去间接访问 10.5 继承与组合 10.5.3 对象分析 10.5.4 继承设计 10.5.5 组合设计 继承完全可以用组合来实现,组合也完全可以用继承来实现 继承在访问基类成员上比较方便和直接,但基类和子类是紧密结合在一起的,调试过程比较繁琐 组合在访问成员对象数据时比较麻烦,但调试比较直截了当 继承和组合的选用 无论选用继承还是组合,对外接口都是相同的。这一点是宗旨。 10.5 继承与组合 继承型的Circle类头文件: #include"point.h" class Circle : public Point{ double radius; public: //成员函数 }; 10.6 多继承概念 10.6.1 多继承结构 以多个已定义的类为基类,通过继承产生派生类的过程称为多重继承 程序举例(f1006) 10.6.2 基类成员名冲突 问题的提出 简单解决方法及其缺点 问题的关键原因所在:多个基类中出现两个或多个意义相同的实体是不应该的 10.6 多继承概念 10.6.3 基类分解 程序举例(f1007) 10

文档评论(0)

学习让人进步 + 关注
实名认证
内容提供者

活到老,学到老!知识无价!

1亿VIP精品文档

相关文档