C继承机制学习教案_第1页
C继承机制学习教案_第2页
C继承机制学习教案_第3页
C继承机制学习教案_第4页
C继承机制学习教案_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、会计学1C继承继承(jchng)机制机制第一页,共20页。第1页/共20页第二页,共20页。通过继承,可以通过继承,可以(ky)(ky)对已有的类进行细分来定义新对已有的类进行细分来定义新的类。的类。派生新类的类称为派生新类的类称为(chn wi)(chn wi)基类,又称父类,而将派基类,又称父类,而将派生出来的新类称为生出来的新类称为(chn wi)(chn wi)派生类,又称子类。派生类,又称子类。根据一个类创建一个新类的过程称为根据一个类创建一个新类的过程称为继承继承,也称,也称派生派生。新类自动具有原有类的成员,根据需要还可以增加新。新类自动具有原有类的成员,根据需要还可以增加新成员

2、。成员。第2页/共20页第三页,共20页。class 基类基类 class 派生类派生类 : 继承继承(jchng)方式方式 基类基类 ;第3页/共20页第四页,共20页。class Fish public: bool freshWaterFish;class Tuna : public Fish public: Tuna() freshwater = false; / 子类继承子类继承(jchng)了基类成员了基类成员;Tuna t1; t1.freshWaterFish = true;第4页/共20页第五页,共20页。派生类继承派生类继承(jchng)(jchng)了基类所有的成员变量了基

3、类所有的成员变量( (私有的不能访问私有的不能访问,可视作未继承,可视作未继承(jchng)(jchng),以及除构造函数和析构函数之外,以及除构造函数和析构函数之外所有的成员函数。所有的成员函数。访问控制关键字访问控制关键字 protected 声明声明(shngmng)的成员:类内的成员:类内部和派生类内部可以访问,类外部不能访问。部和派生类内部可以访问,类外部不能访问。因此,派生类可以访问基类的因此,派生类可以访问基类的 public 成员和成员和 protected 成员成员。第5页/共20页第六页,共20页。class Fish protectd: bool freshWaterFi

4、sh;class Tuna : public Fish public: Tuna() freshwater = false; / 派生类内部可以访问派生类内部可以访问;Tuna t1; t1.freshWaterFish = true;/ 错误错误(cuw),类外部不能访问,类外部不能访问第6页/共20页第七页,共20页。l增加新的成员变量增加新的成员变量(binling)(binling)l增加新的成员函数增加新的成员函数l重新定义基类的成员函数重新定义基类的成员函数可以可以(ky)(ky)对派生类做如下几种变化:对派生类做如下几种变化:C+11提供了提供了防止防止类被继承的方法:在类名后加

5、上关键字类被继承的方法:在类名后加上关键字 finalclass 类名类名 final ; 第7页/共20页第八页,共20页。class Animal public: unsigned int age; void speak() const cout “” endl; ;class Fish : public Animal public: bool freshWaterFish;/ 新增成员新增成员(chngyun)变量变量 void swim() const ;/ 新增成员新增成员(chngyun)函数函数 / 重新定义成员重新定义成员(chngyun)函数函数 void speak() c

6、onst cout “Booooo” endl; ;第8页/共20页第九页,共20页。如果派生类中有与基类相同的成员函数,则称覆盖如果派生类中有与基类相同的成员函数,则称覆盖(fgi)(override)了基类的方法。了基类的方法。如果派生类中没有如果派生类中没有(mi yu)覆盖基类的方法,派生类对象可覆盖基类的方法,派生类对象可以调用基类的方法。以调用基类的方法。否则,派生类对象仅能调用自己覆盖后的方法。否则,派生类对象仅能调用自己覆盖后的方法。第9页/共20页第十页,共20页。一个一个(y )(y )派生类既可以从一个派生类既可以从一个(y )(y )基类派生,基类派生,也可以从多个基类

7、派生。也可以从多个基类派生。从一个从一个(y )(y )基类派生的继承被称为单继承。基类派生的继承被称为单继承。从多个基类派生的继承被称为多继承。从多个基类派生的继承被称为多继承。因为多继承复杂且易出错因为多继承复杂且易出错(ch cu),多数情况下,继承,多数情况下,继承应该定义为单继承。应该定义为单继承。第10页/共20页第十一页,共20页。在在C+中,单继承中,单继承(jchng)的一般形式为:的一般形式为:class 派生类名派生类名 :继承方式:继承方式 基类名基类名 public: protected: private: ;第11页/共20页第十二页,共20页。class Fish

8、 public: bool freshWaterFish; void swim() cout “Swims in ” freshWaterFish?”lake”:”sea” endl;class Tuna : public Fish public: Tuna() freshWaterFish = false; 第12页/共20页第十三页,共20页。“继承继承(jchng)方式方式”有三种:有三种:public 表示公有继承表示公有继承(jchng)方式方式private 表示私有继承表示私有继承(jchng)方式方式protected 表示保护继承表示保护继承(jchng)方式方式缺省情况缺省

9、情况(qngkung)(qngkung)下为私有继承方式。下为私有继承方式。 第13页/共20页第十四页,共20页。基类基类派生类派生类公有公有保护保护私有不可访问第14页/共20页第十五页,共20页。三种三种(sn zhn)情况:情况:1.派生类对象可以赋给基类的对象派生类对象可以赋给基类的对象例如:例如: DerivedClass d; BaseClass b; b = d;赋值兼容规则:是指在公有继承赋值兼容规则:是指在公有继承(jchng)情况下,一情况下,一个派生类的对象可以作为基类的对象来使用。即派生个派生类的对象可以作为基类的对象来使用。即派生类对象与基类对象是类对象与基类对象是

10、“is-a”的关系。的关系。第15页/共20页第十六页,共20页。2. 派生类对象可以初始化基类的引用派生类对象可以初始化基类的引用(ynyng)例如:例如: DerivedClass d; BaseClass& br=d;3. 派生类对象的地址派生类对象的地址(dzh)可以赋给指向基类的指针可以赋给指向基类的指针例如:例如: DerivedClass d; BaseClass* pb = &d;第16页/共20页第十七页,共20页。派生类名派生类名:派生类名派生类名(形参列表形参列表(li bio) : 基类名基类名(实参列表实参列表(li bio)1) ;如果需要调用基类的默认构造函数如果需要调用基类的默认构造函数(无参数无参

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论