第7章 继承与多态.docxVIP

  1. 1、本文档共43页,可阅读全部内容。
  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文档。上传文档
查看更多
第7章 继承与多态

版本控制页版本控制表序号版本号版本性质创建时间建议人修订人修改日期修改内容简述备注V0.00初稿10.28.2008华伟一审11.4.2008刘新华二审11.11.2008郑砚一校2008.11.14赵元继承和多态本章主要内容:继承多态虚函数函数模板类模板本章重点:继承的含义和作用多态的含义和实现模板的概念模板的应用本章难点:派生关系中的二义性静态多态和动态多态类模板的定义和使用类模板中的静态成员和友元类模板的继承学完本章您将能够:掌握继承的概念和作用了解继承中会出现的问题掌握静态多态和动态多态掌握模板技术掌握函数模板的使用掌握类模板的使用引言C++程序用类来表示一组数据及对这些数据的操作,往往在不同的类之间存在着某些特定的关系,除了上一章介绍的友元关系之外,更多的是继承与派生关系。从一个已有类派生出一个新的类,那么这两个类的关系就称为是继承。对于存在继承关系的多个类中,对于同样的一个事件可以导致完全不同的行为,这种现象就称为多态。封装使C++程序组织严密,继承使其结构科学,多态则使其生动而富有魅力。继承继承是面向对象程序设计的一个重要特性,它允许在原有类的基础上创建新的类。新类可以从一个或多个原有类中继承函数和数据,而且可以重新定义或添加新的数据和函数。继承的含义人类在认识事物时都是从简单到复杂,从少量个体中找出共性,总结出规律,然后再从共性中找出个体差异,根据差异对事物分门别类层层细分,形成类别。程序设计中也是如此,先找出大部分事物共性的部分,形成基本的类使它具有一些基本的数据成员和一些基本的成员函数,以实现基本的功能。然后根据需要在这个类的基础上派生出新的类来,这个新类首先具有基类的所有的数据成员和函数成员,也就是具有这个基类的功能,同时它还应有一些自已特有的成员,实现一些区别于基类的功能。例如,从羊派生出山羊、绵羊。从一个基类派生出其他类的过程便是一个继承的过程。派生的新类具有基类的所有特征,同时还有自己的特征,例如山羊既是羊,同时又有自己的特征,区别于其他羊。继承关系,确定了类与类之间的层次关系,使问题更明晰、更有层次。根据派生类所拥有的基类数目不同,可以分为单继承和多继承。一个类只有一个直接基类时,称为单继承;而一个类同时有多个直接基类时,则称为多继承。单继承的例子很简单,例如山羊从羊继承;多继承的例子一般比较复杂,例如变形金刚就属于多继承,既继承了车辆又继承了智能生命。单继承和多继承如图7-1所示。单继承和多继承派生类的定义定义派生类的一般格式如下:class 派生类名 : 继承方式1 基类名1, 继承方式2 基类名2, …, 继承方式n 基类名n { 派生类新定义成员 }; 其中的基类名是已有的类的名称。派生类名是继承原有类的特性而生成的新类的名称。单继承时,只需定义一个基类;多继承时,需同时定义多个基类。继承方式即派生类的访问控制方式,用于控制基类中声明的成员在哪种范围内能被派生类的用户访问。每一个继承方式,只对紧随其后的基类进行限定。继承方式包括3种:公有继承public、私有继承private和保护继承protected。如果不显式地给出继承方式,缺省的类继承方式是私有继承private。派生类新定义成员是指除了从基类继承来的所有成员之外,新增加的数据成员和成员函数。下列代码演示了最简单的继承:// 盒子类class Box {// 宽 int width; // 高int height;public: // 设置宽 void SetWidth(int w) { width=w; } // 设置高 void SetHeight(int h) { height=h; } // 获取宽 int GetWidth() {return width;} // 获取高 int GetHeight() {return height;}};// 派生类彩色盒子// 彩色盒子类class ColoredBox:public Box{ };// 派生类黑白盒子// 黑白盒子类class BWBox:public Box{ };派生类对基类成员的访问权限类的继承方式有公有继承public、保护继承(protected)和私有继承(private)3种,不同的继承方式,导致原来具有不同访问属性的基类成员在派生类中的访问属性也有所不同。基类成员在各自派生类中的存取权限如表7-1所示。基本成员在派生类中的访问权限基类成员的访问控制public继承protected继承private继承private不可访问不可访问不可访问protectedprotectedprotectedprivatepublicpublicprotectedpri

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档