版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、会计学1C继承机制继承机制第1页/共20页通过继承,可以对已有的类进行细分来定义新的类。通过继承,可以对已有的类进行细分来定义新的类。派生新类的类称为派生新类的类称为基类基类,又称,又称父类父类,而将派生出来的,而将派生出来的新类称为新类称为派生类派生类,又称,又称子类子类。根据一个类创建一个新类的过程称为根据一个类创建一个新类的过程称为继承继承,也称,也称派生派生。新类自动具有原有类的成员,根据需要还可以增加。新类自动具有原有类的成员,根据需要还可以增加新成员。新成员。第2页/共20页class 基类基类 class 派生类派生类 : 继承方式继承方式 基类基类 ;第3页/共20页class
2、 Fish public: bool freshWaterFish;class Tuna : public Fish public: Tuna() freshwater = false; / 子类继承了基类成员子类继承了基类成员;Tuna t1; t1.freshWaterFish = true;第4页/共20页派生类继承了基类所有的成员变量派生类继承了基类所有的成员变量( (私有的不能访问私有的不能访问,可视作未继承,可视作未继承) ),以及除构造函数和析构函数之外,以及除构造函数和析构函数之外所有的成员函数。所有的成员函数。访问控制关键字访问控制关键字 protected 声明的成员:声明
3、的成员:类内部类内部和和派生派生类内部类内部可以访问,可以访问,类外部类外部不能访问。不能访问。因此,派生类可以访问基类的因此,派生类可以访问基类的 public 成员和成员和 protected 成员。成员。第5页/共20页class Fish protectd: bool freshWaterFish;class Tuna : public Fish public: Tuna() freshwater = false; / 派生类内部可以访问派生类内部可以访问;Tuna t1; t1.freshWaterFish = true;/ 错误,类外部不能访问错误,类外部不能访问第6页/共20页l
4、增加新的成员变量增加新的成员变量l增加新的成员函数增加新的成员函数l重新定义基类的成员函数重新定义基类的成员函数可以对派生类做如下几种变化:可以对派生类做如下几种变化:C+11提供了提供了防止防止类被继承的方法:在类名后加上关键类被继承的方法:在类名后加上关键字字 finalclass 类名类名 final ; 第7页/共20页class Animal public: unsigned int age; void speak() const cout “” endl; ;class Fish : public Animal public: bool freshWaterFish;/ 新增成员变
5、量新增成员变量 void swim() const ;/ 新增成员函数新增成员函数 / 重新定义成员函数重新定义成员函数 void speak() const cout “Booooo” endl; ;第8页/共20页如果派生类中有与基类相同的成员函数,则称如果派生类中有与基类相同的成员函数,则称覆盖覆盖(override)了基类的方法。了基类的方法。如果派生类中没有覆盖基类的方法,派生类对象可以如果派生类中没有覆盖基类的方法,派生类对象可以调用基类的方法。调用基类的方法。否则,派生类对象仅能调用自己覆盖后的方法。否则,派生类对象仅能调用自己覆盖后的方法。第9页/共20页一个派生类既可以从一个
6、基类派生,也可以从多个基一个派生类既可以从一个基类派生,也可以从多个基类派生。类派生。l从从一个一个基类派生的继承被称为基类派生的继承被称为单继承单继承。l从从多个多个基类派生的继承被称为基类派生的继承被称为多继承多继承。因为多继承复杂且易出错,多数情况下,继承应该定因为多继承复杂且易出错,多数情况下,继承应该定义为单继承。义为单继承。第10页/共20页在在C+中,单继承的一般形式为:中,单继承的一般形式为:class 派生类名派生类名 :继承方式继承方式 基类名基类名 public: protected: private: ;第11页/共20页class Fish public: bool
7、freshWaterFish; void swim() cout “Swims in ” freshWaterFish?”lake”:”sea” endl;class Tuna : public Fish public: Tuna() freshWaterFish = false; 第12页/共20页“继承方式继承方式”有三种有三种:lpublic 表示公有继承方式表示公有继承方式lprivate 表示私有继承方式表示私有继承方式lprotected 表示保护继承方式表示保护继承方式缺省情况下为缺省情况下为私有私有继承方式。继承方式。 第13页/共20页基类基类派生类派生类公有公有保护保护私有
8、不可访问第14页/共20页三种情况:三种情况:1.派生类对象可以赋给基类的派生类对象可以赋给基类的对象对象例如:例如: DerivedClass d; BaseClass b; b = d;赋值兼容规则:赋值兼容规则:是指在公有继承情况下,一个派生类是指在公有继承情况下,一个派生类的对象可以作为基类的对象来使用。即派生类对象与的对象可以作为基类的对象来使用。即派生类对象与基类对象是基类对象是“is-a”的关系。的关系。第15页/共20页2. 派生类对象可以初始化基类的派生类对象可以初始化基类的引用引用例如:例如: DerivedClass d; BaseClass& br=d;3. 派生类对象的地址可以赋给指向基类的派生类对象的地址可以赋给指向基类的指针指针例如:例如: DerivedClass d; BaseClass* pb = &d;第16页/共20页派生类名派生类名:派生类名派生类名(形参列表形参列表) : 基类名基类名(实参列表实参列表1) ;如果需要调用基类的默认构造函数如果需
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农业副产品采购协议
- 分包泥工劳务合同新版
- 定金协议合同法律效力
- 检查招标文件的规范性
- 数码彩色打印服务合同
- 施工协议补充内容示例文本
- 绿化项目公开竞争性谈判文件
- 廉政工作承诺函
- 2024年度广告合作协议违约金条款
- 石油开采项目合同
- 中医操作评分表
- 冯晓霞教授的《幼儿学习品质观察评定表》
- 手工焊接作业指导书
- 拱桥悬链线计算表
- 半年分析----住院超过30天患者原因分析及改进措施
- 无公害农产品查询
- 国家公派出国留学经验交流PPT课件
- 研究生课程应用电化学(课堂PPT)
- 六宫数独可直接打印共192题
- 班会:如何克服浮躁心理PPT优秀课件
- Monsters歌词下载,Monsters原唱歌词中文翻译,Monsters简谱KatieSky
评论
0/150
提交评论