实验二 继承与派生.docVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验二 继承与派生

实验二 继承与派生 1 实验目的 1、理解继承在面向对象程序设计中的重要作用; 2、理解继承和派生的概念; 3、掌握通过继承派生出一个新类的方法; 4、进一步学习简单面向对象程序的编写; 2 知识点介绍 1、保持已有类的特性而构造新类的过程称为继承。 2、在已有类的基础上新增自己的特性而产生新类的过程称为派生。 3、被继承的已有类称为基类(或父类)。 4、派生出的新类称为派生类。 5、一个派生类不仅可以从一个基类派生,也可以从多个基类派生。一个派生类有两个或多个基类的称为多重继承 class 派生类名:继承方式基类名 { 成员声明; } 6、三种继承方式 公有继承 public 私有继承 private 保护继承 protected (1) 公用继承(public inheritance) 基类的public 和protected 成员的访问属性在派生类中保持不变,但基类的private成员不可直接访问。 (2) 私有继承(private inheritance) 基类的public 和protected 成员都以private 身份出现在派生类中,但基类的private成员不可直接访问。 (3) 受保护的继承(protected inheritance) 基类的public 和protected 成员都以protected 身份出现在派生类中,但基类的private成员不可直接访问 7、在设计派生类的构造函数时,不仅要考虑派生类所增加的数据成员的初始化,还应当考虑基类的数据成员初始化。 派生类构造函数一般形式为: 派生类构造函数名(总参数表列): 基类构造函数名(参数表列):子对象构造函数 名(参数列表) { 派生类中新增数据成员初始化语句 } 8、派生类构造函数的任务应该包括3 个部分: (1) 对基类数据成员初始化; (2) 对子对象数据成员初始化; (3) 对派生类数据成员初始化。 9、在建立一个对象时,执行构造函数的顺序是: 执行派生类构造函数的顺序是: ① 调用基类构造函数,对基类数据成员初始化; ② 调用子对象构造函数,对子对象数据成员初始化; ③ 再执行派生类构造函数本身,对派生类数据成员初始化 派生类构造函数的总参数表列中的参数,应当包括基类构造函数和子对象的参数表列中的参数。 基类构造函数和子对象的次序可以是任意的。 10、派生类是不能继承基类的析构函数的,也需要通过派生类的析构函数去调用基类的析构函数。 在派生类中可以根据需要定义自己的析构函数,用来对派生类中所增加的成员进行清理工作。基类的清理工作仍然由基类的析构函数负责。 在执行派生类的析构函数时,系统会自动调用基类的析构函数和子对象的析构函数,对基类和子对象进行清理。 调用的顺序与构造函数正好相反: 先执行派生类自己的析构函数,对派生类新增加的成员进行清理,然后调用子对象的析构函数,对子对象进行清理,最后调用基类的析构函数,对基类进行清理。 11、多重继承派生类的构造函数形式 派生类构造函数名(总参数表列): 基类1 构造函数(参数表列), ……………… 基类n 构造函数 (参数表列) { 派生类中新增数成员据成员初始化语句 } 各基类的排列顺序任意。 派生类构造函数的执行顺序同样为: 先调用基类的构造函数,再执行派生类构造函数的函数体。 调用基类构造函数的顺序是按照声明派生类时基类出现的顺序。 基类的同名成员在派生类中被屏蔽,成为“不可见”的,或者说,派生类新增加的同名成员覆盖了基类中的同名成员。因此如果在定义派生类对象的模块中通过对象名访问同名的成员,则访问的是派生类的成员。 不同的成员函数,只有在函数名和参数个数相同、类型相匹配的情况下才发生同名覆盖,如果只有函数名相同而参数不同,不会发生同名覆盖,而属于函数重载。 4 实验内容 题目1 图形类 设计一个图形基类:Shape,在此基础上派生Rectangle、Circle、Triangle 类。 1、Cirlce 类基本信息:圆心坐标、半径; Rectangle 类基本信息:长、宽; Triangle 类基本信息:三个顶点坐标; 其中:成员变量为 private 属性,成员函数为public 属性; 2、每个图形类有多个构造函数:缺省构造函数、带参数的构造函数; 3、每个图形类有计算图形的面积GetArea(),显示图形的基本信息函数Show(),修改基 本信息的函数Set(形参)。 [实验提示] 1、在派生类的构造函数中,应注意对基类数据成员的初始化; 2、各类图形面积的计算方法不同, 因此不能在基类 Shape 中统一确定计算的方法。在 基类Shape 中实现计算面积功能的函数体GetArea()应为空,在派生类中根据同名覆盖原则 定义各自的同名函数实现具体功能 [测试数据] Circl

文档评论(0)

qiwqpu54 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档