继和派生.pptVIP

  1. 1、本文档共28页,可阅读全部内容。
  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文档。上传文档
查看更多
继和派生

继承和派生 继承和派生的基本概念 单一继承定义 派生类重定义基类函数 基类中成员被继承后存取权限等级的变化 继承关系中构造函数、析构函数之间的关系 多重继承 继承的例子 家具和柜子 建筑和房子 道路和高速公路 动物和猫 电视和彩色电视 电脑和笔记本电脑 基类与派生类 在原有类的基础上派生出新的类,新类继承原有类的属性和方法,称原有的类为基类,新类称为派生类。 假定有一个类A,要创建一个新类B,它是类A的一个特殊版本。类A就称为基类,类B则称为派生类。类A是父,类B就是子 继承和派生的基本概念 继承允许以现有的类为基础来构建新类 新类(派生类)继承现有类(基类)的属性和行为 派生类可以修改继承的属性和行为 派生类可以增加新的属性和行为 派生类对象也是基类对象 派生类对象和基类对象可以被统一管理 继承和派生的基本概念 继承的意义 便于管理系统中的对象 系统扩充比较容易- 利用程序代码的再用性 加快程序发展的速度 减少程序的错误 何时使用继承 继承使用时机 A类是B类的一种 A类与B类在属性和功能上相差不多, 只是A类多了一些独有的特性 此时可以考虑使A类继承于B类 派生类的声明 单继承派生类的声明语法为: class 派生类名 : 继承方式? 基类名 { ????? 派生类新增成员的声明; } 继承要考虑的部分 派生类不同于基类的部分 派生类扩充基类的部分 继承和派生 class Point {private: int x,y; public:Point(int a ,int b){x=a;y=b;} void show(){coutxyendl;} }; class Rectangle:private Point {private:int H,W; public:Rectangle(int a,int b,int h,int w):Point(a,b) {H=h;W=w;} void show(){point::show();coutHWendl;} }; 继承和派生 私有成员(private):可以被类自身的成员和友元访问,但不能被包括派生类在内的其他任何类和任何普通函数访问 公有成员(public):可以被任何普通函数和任何类的成员函数访问 保护成员(protected):可以被类自身的成员和友元访问外,还可以被派生类的成员函数访问,但不能被任何非友元的普通函数访问 公有继承(public)和派生 基类中公有成员和受保护成员被继承后可见性不变 public方式继承成员存取权限等级的变化 私有继承(private)和派生 基类中公有成员和受保护成员被继承后都是私有的 private方式继承成员存取权限等级的变化 受保护继承(protected)和派生 基类中公有成员和受保护成员被继承后都是受保护的 基类中的私有成员 基类中的私有成员 能被派生类继承 不能被派生类的成员函数直接访问 可通过定义于基类的公有和受保护成员函数访问 派生类重定义基类函数 在派生类中重定义基类的函数 派生类自动继承基类的所有成员 重定义函数的函数原型和基类中被重定义函数的函数原型必须完全相同 不同则是函数重载 重定义之后两个函数共存,但调用方法不同 调用基类函数:基类名 + :: + 函数名 调用派生类函数:直接调用 如果派生类中出现相同的成员需要编程时注意其存取的范围. 不能运用基类的成员函数来设定派生类的数据成员, 而只能在派生类中重新定义存取数据成员的成员函数. 继承和派生 练习、设计一个圆类,从圆派生圆柱(或圆锥),并设计成员函数输出圆柱(或圆锥)的底面面积和体积。 继承关系中构造函数之间的关系 派生类不继承基类的构造函数 派生类和基类的构造函数之间是一种自动调用的关系 创建派生类对象时,派生类构造函数要调用基类的构造函数对基类的数据成员进行初始化 先执行基类构造函数,然后执行派生类构造函数体 基类构造函数需要参数时需要显式调用,格式: 派生类名::派生类名(参数表):基类(参数表) 基类构造函数不需要参数时(有默认构造函数),隐式调用 继承关系中析构函数之间的关系 派生类不继承基类的析构函数 派生类和基类的析构函数之间是一种自动调用的关系 派生类的析构函数也需要调用基类的析构函数做一些和基类相关的清理工作 销毁派生类对象时 先执行派生类析构函数,然后执行基类析构函数体 继承和派生 class People { public: People(char *str ){ name = new char[strlen(str)+1]; strcpy(name, str); coutPeopl

文档评论(0)

181****9125 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档