- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第8章 继承与派生 学习目标 理解继承/派生的概念及作用,掌握继承/派生的实现语法 理解继承/派生中构造/析构函数的调用顺序 了解多继承中的二义性问题,理解虚基类的概念与作用 题外话——如何学好C++ 粗细相济 在面向过程编程部分,对数据类型、运算符、语句等要注重细节 在面向对象编程部分,重在对概念、思想和方法的理解。对每个概念回答是什么?为什么?怎么实现?这三个问题 手脑并用 做到“上机、上机、再上机” 切忌浮躁 如果你愿意利用5年时间来成为高手,那么你只要两三年就会成为高手,如果你想一年就成为高手,那么你5年也成不了高手 继承/派生概述 现实世界中的许多事物,它们之间具有“一般与特殊”的关系。例如:人是一个群体,学生也是一个群体,某个具体的学生,他/她既具有人的特征也具有学生的特征 在面向对象的程序设计中, “一般与特殊”的关系使用继承/派生机制实现,该机制利用已有的“一般”类来定义新的“特殊”类,使得新类不仅拥有自己的属性和操作,而且也拥有原有类的属性和操作,实现了代码级别上的复用 原有类称为基类(Base Class)或父类(Super Class),新类称为派生类(Derived class)或子类(Sub Class) 子类拥有父类属性和操作这一过程称为继承(Inherit);由父类产生子类的过程称为派生(Derive) 多层继承与多重继承 派生类又作为基类,继续派生出新的类, 这样的派生方式称为多层派生,从继承的角度看称为多层继承 如果一个派生类只有一个基类,则称为单重继承;如果一个派生类有两个或两个以上的基类,则称为多重继承 继承/派生的实现 语法形式class 派生类:继承方式1 基类1,继承方式2 基类2,…{private: 派生类新增的私有成员定义语句public: 派生类新增的公有成员定义语句protected: 派生类新增的保护成员定义语句}; 继承/派生的说明 继承方式有三种:public、protected、private,缺省的情况下默认为是private 通过继承,派生类不仅具有新增的、自己特有的成员,而且还具有基类的成员 如果派生类中添加的成员与基类中的相同,则该新成员将覆盖基类中的原有成员,即基类的成员在派生类中不可见(但存在)注意:对于成员函数,如果只是名称相同,而参数列表不相同,则不是覆盖,而是重载 继承不可循环:若A为B的基类,则B不能再为A的基类 继承/派生实现示例 class Clock { private: int H,M,S; public: void SetTime(int H=0,int M=0,int S=0); void ShowTime(); Clock(int H=0,int M=0,int S=0); }; class AlarmClock:public Clock { private: int AH,AM; //响铃的时间 bool OpenAlarm; //响铃的状态 public: void SetAlarm(int AH,int AM); //设置响铃时间 void SwitchAlarm(bool Open=true); //开/关响铃 void ShowTime(); //显示当前时间与响铃时间 AlarmClock(int AH=0,int AM=0); }; 实现示例说明 对于Clock类,拥有H、M、S三个私有成员变量和SetTime、ShowTime两个公有成员函数,另外还有一个公有构造函数 对于AlarmClock类,拥有AH、AM、OpenAlarm三个私有成员变量,以及SetAlarm、SwitchAlarm、ShowTime三个公有成员函数,另外,还通过继承拥有H、M、S三个成员变量,以及SetTime、ShowTime两个成员函数。注意: 基类中的ShowTime被覆盖,不可见,但存在 不继承基类的构造函数 继承过来的成员,其访问控制由继承方式与该成员在基类中的访问控制属性共同决定 继承与组合 继承是一般与特殊关系的描述,派生类与基类之间体现的是“is a kind of”关系,即如果在逻辑上,A类描述的群体是B类描述的群体的一部分,则从B类派生出A类比较自然 组合是整体与部分关系的描述,类成员与组合类之间体现的是“is a part of”关系,即如果在逻辑上,A类描述的个体是B类描述的个体的组成部分之一,则将B类定义为组合类(包含A类个体作为成员)比较自然 继承和组合既有区别,也有联系,某些比较复杂的类,既需要使用继承,也需要使用组合,二者一起使用。什么时候使用继承,什么时
您可能关注的文档
最近下载
- 50MW级燃气蒸汽联合循环发电工程.docx VIP
- 道路运输企业安全管理培训课件.pptx VIP
- 房地产开发公司、甲方、建设方安全管理制度.docx VIP
- 第1课时 按一定的标准分类与整理(课件) (共26张PPT)人教版(2024)数学 二年级上册.pptx VIP
- GB14881食品安全国家标准食品生产通用卫生规范培训考试题.pdf VIP
- 外科护理(中职医药护理专业)全套教学课件.pptx
- 足踝部解剖讲课.ppt VIP
- 2025年新人教版数学三年级上册全册教案.pdf
- 2024-2025学年初中音乐西大版2024七年级上册-西大版2024教学设计合集.docx
- 2025版传染病防治法课件ppt共48张 .pdf VIP
文档评论(0)