- 1、本文档共73页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第13章 继承和派生.ppt
第13章 继承和派生 通过继承已有类的部分或全部成员,创建新类的过程称为派生。 继承既简化程序设计,显著提高软件的重用性,又使软件维护更容易。 13.1 继承 在定义类A时,若使用了已有类B,则称类A继承了类B,并称类B为基类或父类,称类A为派生类或子类。 一个派生类又可作为另一个类的基类,一个基类可派生出若干个派生类,这样就构成类树或类族。 继承分为 单一继承:一个派生类仅有一个基类; 多重继承:一个派生类有两个或两个以上的基类。 举例:见图13-1,图中的箭头是从派生类指向基类。 在校人员类:描述在校人员的共性信息(如姓名、年龄、身高和性别等)。 学生类:单一继承“在校人员类”,并增加描述学生的个性信息(如学号、所学专业和课程等)。 单一继承 格式: class ClassName:Access BaseClassName { … //派生类中新增成员,可为空 }; 公有派生 基类成员在公有派生类中保持原有访问权限。 基类的public成员,在派生类中仍为public成员。 基类的private成员,在派生类中仍为private成员。注意,派生类不能直接使用基类中的私有成员。 基类的protected成员,在派生类中仍为protected成员,在派生类中可直接访问,但在派生类外,不可直接访问。 例13.1 公有派生。 #includeiostream.h class A { int x; protected: int y; public: int z; A(int a,int b,int c){ x=a;y=b;z=c; } void Setx(int a){ x=a; } void Sety(int a){ y=a; } int Getx( ){ return x; } int Gety( ){ return y; } void ShowB( ) {coutx=x\ty=y\tz=z\n;} }; class B:public A //公有继承基类A,派生类B { int Length,Width; public: B(int a,int b,int c,int d,int e): A(a,b,c) { Length=d;Width=e; } void Show( ) { coutLength=Length\tWidth=Width\n; coutx=Getx( )\ty=y\tz=z\n; } int Sum( ){ return Getx( )+y+z+Length+Width; } }; ? void main(void) { B b1(1,2,3,4,5); b1.ShowB( ); b1.Show( ); coutSum=b1.Sum( ); cout\ny=b1.Gety( ); cout\tz=b1.z\n; } 私有派生 基类中公有成员和保护成员在私有派生类中均变为私有的,在派生类中仍可直接访问,但在派生类之外均不可直接访问。 基类中的私有成员在私有派生类中不可直接访问,当然在派生类之外,更不直接访问。 例13.2 私有派生。 #lncludeiostream.h ? class A { int x; protected: int y; public: int z; A(int a,int b,int c){ x=a;y=b;z=c; } void Setx(int a){ x=a; } int Getx( ){ return x; } int Gety( ){ return y; } }; ? class B:private A //私有继承基类A,派生类B { int Length,Width; public: B(int a,int b,int c,int d,int e) : A(a,b,c) { Length=d;Width=e; } void Show( ) { coutLength=Length\tWidth=Width\n; coutx=Getx( )\ty=y\tz=z\n; } int Sum(void) { return Getx( )+y+z+Length+Width; } }; ? void main(void) { B b1(1,2,3,4,5); b1.Show( ); coutSum=b1.Sum( )\n; } 实际编程中,公有派
您可能关注的文档
- 第06讲 关于人的单词(续4).pptx
- 第06讲记忆加工过程.pptx
- 第07章散射.ppt
- 第07章:指针,C语言程序设计课件,与中南大学出版社教材相配套.ppt
- 第07讲 关于人的单词(续5).pptx
- 第07讲记忆的现象.pptx
- 第08章 数字系统的最佳接收(已改).ppt
- 第08章 进口保护政策-非关税壁垒.ppt
- 第08章_光学信号的调制.ppt
- 第08章产品决策.ppt
- DB44_T 2607.4-2025 滨海蓝碳碳汇能力调查与核算技术指南 第4部分:盐沼.pdf
- DB43_T 3178-2024 烟叶农场建设管理要求.pdf
- DB37_T 4838-2025 含氢分布式综合能源系统运行优化指南.pdf
- DB37_T 4834-2025 高速公路集中养护工作指南.pdf
- DB44_T 2611-2025 城市排水管网有毒有害气体监测与风险分级管理技术标准.pdf
- DB44_T 2612-2025 竞赛类科普活动策划与实施服务规范.pdf
- DB43_T 2947-2024 烟草种子质量控制规程.pdf
- DB37_T 4836-2025 煤矿风量实时监测技术要求.pdf
- 叉车防撞系统,全球前22强生产商排名及市场份额(by QYResearch).docx
- 超滤膜,全球前18强生产商排名及市场份额(by QYResearch).docx
文档评论(0)