- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
最近下载
- 规范汉字书写 标点符号用法举例 标点符号用法举例.pptx VIP
- 职业院校技能大赛--Z-30“工程测量”赛项理论考试题库.doc VIP
- 安全员C证考试题库(精练).docx VIP
- 2018年四川省职业院校技能大赛工程测量赛项中职组理论考试题库.docx VIP
- 2020年山东省职业院校技能大赛中职组工程测量赛项理论试题.doc VIP
- 第十六届山东省职业院校技能大赛中职工程测量赛(教师组)理论试题.docx VIP
- 中央八项规定精神专题党课讲座PPT模板.pptx VIP
- 第十六届山东省职业院校技能大赛中职工程测量赛项(学生组)理论试题.docx VIP
- 全频带阻塞干扰刘慈欣小说读书分享PPT.pptx VIP
- 作子女生命的教练.PPT
文档评论(0)