c继承与派生学习.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2022-9-21 1 现实中的继承与派生 在自然界中,继承这个概念是非常普遍的。例如:小猫仔继承了猫爸猫妈的特性,所以长的是猫鼻子猫眼,我们不会把它错认为是小狗。 继承就是将一些本质的特性遗传给子代,使后代在很大程度上具有与父代相同的性质。 子代同时还具有父代没有的特性。 第1页/共46页 2022-9-21 2 再来看一个现实世界中的例子: 四边形是一个基本的概念,矩形、正方形、菱形和平行四边形都是派生的概念,因为它们都属于四边形,它们继承了四边形的所有性质,同时又扩充出各自的特性。 第2页/共46页 2022-9-21 3 从上面的例子可以看出: 而且子代可以拥有父代没有的特性,这是可扩充的概念。 一旦指定了某种事物父代的本质特征,那么它的子代将会自动具有那些性质。这就是一种朴素的可重用的概念。 第3页/共46页 2022-9-21 4 从软件设计的角度来看: 基于已有的类,可以建立新的类。这个新的类既重用已有类的功能,又扩展了新的功能。 类是某类事物共同特性的体现,它对外提供了特定的功能。 第4页/共46页 2022-9-21 5 C++的继承关系 继承就是在一个已经存在的类的基础上建立另一个新的类。 已存在的类称为“基类”或“父类”,新建立的类称为“派生类”或“子类”,如图所示: 第5页/共46页 2022-9-21 6 派生类的功能主要通过以下方式来体现: 派生类的特性 吸收基类成员 添加新成员 改造基类成员 从编码的角度来看,派生类从基类中以较低的代价换来了较大的灵活性。一旦产生了可靠的基类,只需要调试派生类中所作的修改即可。派生类可以对继承的属性进行扩展、限制或改变。 第6页/共46页 2022-9-21 7 单继承和多继承 单继承:派生类只有一个直接基类 多继承:派生类有多个直接基类 第7页/共46页 2022-9-21 8 单继承派生类 定义单继承派生类的语法格式: class 派生类名 : 继承方式 基类名{ ……//派生类新添加的成员 }; “继承方式”可以是public、private、以及 protected。 虽然继承了基类的所有成员,但是派生类并非都能访问基类的所有成员,继承方式会影响派生类对基类中各种成员的引用。 第8页/共46页 2022-9-21 9 公有派生类 在声明派生类时将继承方式指定为public时,该类称为公有派生类。 class 派生类名 : public 基类名 { ……//派生类新添加的成员 }; 第9页/共46页 2022-9-21 10 基类的成员在公有派生类中的引用权限 基类 公有成员 私有成员 保护成员 公有派生类 公有成员 不可访问成员 保护成员 不可访问成员 在类外不能被直接访问。 在派生类的类内不能被直接访问。 第10页/共46页 2022-9-21 11 举例:公有派生 class Base{ int v1; public: int v2; Base(int a=0,int b=0){ v1=a;v2=b; } }; class Derived : public Base{ int v3; public: int v4; Derived(int a=0,int b=0){ v3=a;v4=b; } void func(){ int sum1=v1+v2+v3+v4; int sum2=v2+v3+v4; } }; void main( ){ Derived obj(5,6); obj.v2=8; } //错误 第11页/共46页 2022-9-21 12 私有派生类 在声明派生类时将继承方式指定为private时,该类称为私有派生类。 class 派生类名 : private 基类名 { ……//派生类新添加的成员 }; 第12页/共46页 2022-9-21 13 基类的成员在私有派生类中的引用权限 基类 公有成员 私有成员 保护成员 私有派生类 私有成员 不可访问成员 私有成员 第13页/共46页 2022-9-21 14 举例:私有派生 class Base{ int v1; public: int v2; Base(int a=0,int b=0){ v1=a;v2=b; } }; class Derived : private Base{ int v3; public: int v4; Derived(int a=0,int b=0){ v3=a;v4=b; } void func(){ int sum1=v1+v2+v3+v4; int sum2=v2+v3+v4; } }; void main(

文档评论(0)

kuailelaifenxian + 关注
官方认证
文档贡献者

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

认证主体太仓市沙溪镇牛文库商务信息咨询服务部
IP属地上海
统一社会信用代码/组织机构代码
92320585MA1WRHUU8N

1亿VIP精品文档

相关文档