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

第4章 继承和派生.ppt

  1. 1、本文档共138页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * 前面学习的继承描述的是类与类之间的一般与特殊的关系,是“is-a”关系。如果A是B的一种,则允许A继承B的功能和属性。如研究生是学生的一种,那么研究生类可从学生类派生;汽车是交通工具的一种,小汽车是汽车的一种,那么汽车类可从交通工具类派生,小汽车类可以从汽车类派生。 4.8 聚合与组合 第4章 继承与派生 * * 而这里所说的聚合与组合描述的是类与类之间的整体与部分的关系。聚合关系中成员对象可以脱离整体对象独立存在,而组合关系中的部分和整体具有统一的生命周期。一旦整体对象不存在,部分对象也将不存在。组合关系也被称为是一种强聚合关系。 4.8 聚合与组合 第4章 继承与派生 * * 聚合关系是“has-a”关系,组合关系是“contains-a”关系。例如,计算机和CPU的关系、公司和员工的关系是一种聚合关系,而人和大脑的关系、窗口和其中的按钮的关系是一种组合关系。表现在代码层,这两种关系是一致的,为部分类对象(也称为子对象)以类属性的形式出现在整体类的定义中。区分它们只能从语义级别来区分。 4.8 聚合与组合 第4章 继承与派生 * * 第4章 继承与派生 class Student //学生类 {public: Student(string num, string name, char sex, int age): num(num), name(name), sex(sex), age(age){ } … private: string num; string name; char sex; int age; }; * * 第4章 继承与派生 class Date //生日类 {public: Date(int y, int m, int d); //构造函数 { year=y; month=m; day=d; } … private: int year, month, day; }; * * 第4章 继承与派生 class Graduate: public Student //研究生类 {public: Graduate(string num, string name, char sex, int age, int y, int m, int d, string direct) : Student(num, name, sex, age), birthday(y, m, d), direct(direct){ } … private: Date birthday; //生日,Date类的对象作为数据成员 string direct; //研究方向 }; * * 类的继承、类的聚合和组合和都是软件重用的重要方式。但三者的概念和用法不同。 Graduate类通过继承,从Student类得到了num,name,sex,age等数据成员,通过组合,从Date类得到了year,month,day等数据成员。继承是纵向的,组合是横向的。 4.8 聚合与组合 第4章 继承与派生 * * 在这里,请注意包含子对象的派生类构造函数的书写形式。在派生类构造函数的总参数列表中,给出了初始化基类数据成员、新增子对象数据成员及新增一般数据成员所需的全部参数。在参数表后,列出基类构造函数名、子对象名及各自的实参表,各项之间使用逗号分隔。这里基类构造函数名、子对象名之间的次序无关紧要,它们各自出现的顺序可以是任意的。 4.8 聚合与组合 第4章 继承与派生 * * 在生成派生类对象时,系统首先会使用这里的参数,来调用基类和子对象的构造函数。 定义包含子对象的派生类构造函数的一般形式为: 派生类构造函数名(总参数列表): 基类构造函数名(参数表1),子对象成员名(参数表2) { 派生类新增数据成员初始化 }; 4.8 聚合与组合 第4章 继承与派生 * 燕京理工学院 * 如果派生类有多个子对象,派生类的构造函数的写法以此类推,应列出每一个子对象及其参数。 包含子对象派生类构造函数的执行顺序: (1)最先调用基类的构造函数,对基类数据成员初始化。当派生类有多个基类时,各基类构造函数的调用顺序按照它们在继承方式中的声明次序调用,而不是按派生类构造函数参数初始化列表中的次序调用。 4.8 聚合与组合 第4章 继承与派生 * 燕京理工学院 * (2)再调用子对象的构造函数,对子对象数据成员初始化。当派生类有多个

文档评论(0)

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

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

1亿VIP精品文档

相关文档