第十章 派生类基类和继承性.pptVIP

  1. 1、本文档共21页,可阅读全部内容。
  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文档。上传文档
查看更多
第十章 派生类、基类和继承性 继承是面向对象的重要特性之一,应用继承可以简化人们对事物的认识和理解,可以实现代码重用。从而达到快速构造系统的目的。 10.2 派生类 2. 派生类的语法 3. 继承方式的讨论 2)派生类对基类私有成员的访问 * * C++利用派生类机制作为实现继承的基础,该机制允许从现存的类(基类或一般类)中派生出新类(派生类或特殊类、子类)。 派生类继承了基类的全部的性质(数据成员和成员函数)并且可以增加基类所没有的成员,以满足派生类的特殊要求。 主要内容: 继承的概念; 如何定义派生类; 继承方式(公有继承和私有继承); 基类对象和派生类对象; 派生类的构造函数和析构函数。 继承的应用实例 重点: 定义派生类; 继承方式(公有继承和私有继承); 基类对象和派生类对象; 如何应用继承性。 课堂时数:4学时。 上机时数:2学时。 课外上机时数:3-4学时。 10.1 继承的概念 我们在8.2.3中已简单介绍过继承的概念。 1. 继承是指一个类从另一个或另一些类获得了一些基本性质,并在此基础上增加了自身的一些特殊性质。 2. 继承是建立在类的一般化结构(通用——特殊结构)基础上的。也即特殊类继承了一般类的性质。 一般类——基类,或超类。 特殊类——派生类,或子类。 基类 (Bass Class) 派生类(Derived Class) 例10-1 几个简单的继承例子。 3. 继承的关键成分 (1)实体所具有的共性 (2)实体间的区别,也即实体自身所具有的个性。 例如,正方形具有与四边形相同的性质。 例如,正方形的四条边必须等长。 (3)实体之间存在一般—特殊关系,从而可以建立层次结构。 例10-2 实体间的“一般——特殊”层次结构。 1. 派生类的概念 在继承现有类的性质的基础上定义的新类称为派生类。 现有类可以是C++标准类库提供的类,也可以是程序中用户自行定义的类。 例10-3 假定已定义了学生类,欲再定义研究生类,由于 研究生具有学生的所有基本性质,此外还具有自己的某 些特殊性质,因此可以将研究生类定义成学生类的派生 类。 //定义学生类 class Student { …… }; //定义研究生类 Class GraduateStudent :public Student { …… } 学生类是程序中已定义的类。 例10-4在VC应用程序中,新增对话框,当为对话框创建 类时,一般是从基础类库中的对话框类派生出新的对话框 类。 class CDialogModal : public CDialog { public: CDialogModal(CWnd* pParent = NULL); …… }; 我们可以对新增的对话框类添加各种控件和其它成员,结果如下: 新添加的成员函数 新添加的数据成员 几点说明: class 派生类名 :继承方式 基类名 { 派生类新定义的成员 } (1) 继承方式 public,公有继承,基类称为公有基类,派生类称为公有派生类。 protected,保护方式继承,基类称为保护基类,派生类称为保护派生类。 private,私有继承,基类称为私有基类,派生类称为私有派生类。 (2) 派生类中可以定义新的,基类所没有的成员,也可以重定义基类成员。 例10-5 派生类的定义格式示例。 #include iostream.h class Base { private: float x,y; public: Base(float x1,float y1) {x=x1;y=y1;} void Print () { cout x= x \n y=yendl; } }; class Drived:public Base { private: float z;//派生类新增的数据成员 public: Drived(float x1,float y1,float z1):Base(x1,y1) { z=z1;} //派生类构造函数的定义应包含基类的初始化列表 void Print();//派生类中重定义了基类的成员函数 }; void Drived::Print() { Base::Print();//在派生类中调用基类的同名函数需加Base:: cout z=zendl; } void main() { Drived d1(

文档评论(0)

139****3928 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档