7 继承性和派生类

上传人:豆浆 文档编号:48990736 上传时间:2018-07-22 格式:PPT 页数:92 大小:926.50KB
返回 下载 相关 举报
7 继承性和派生类_第1页
第1页 / 共92页
7 继承性和派生类_第2页
第2页 / 共92页
7 继承性和派生类_第3页
第3页 / 共92页
7 继承性和派生类_第4页
第4页 / 共92页
7 继承性和派生类_第5页
第5页 / 共92页
点击查看更多>>
资源描述

《7 继承性和派生类》由会员分享,可在线阅读,更多相关《7 继承性和派生类(92页珍藏版)》请在金锄头文库上搜索。

1、LOGO继承性和派生类目录7.1 7.1 基类和派生类基类和派生类 7.2 7.2 单继承单继承 7.3 7.3 多继承多继承 7.4 7.4 虚基类虚基类 7.5 7.5 应用实例应用实例日期和时间日期和时间目录7.1 7.1 基类和派生类基类和派生类 7.2 7.2 单继承单继承 7.3 7.3 多继承多继承 7.4 7.4 虚基类虚基类 7.5 7.5 应用实例应用实例日期和时间日期和时间7.1 基类和派生类 所谓继承机制,是指可以通过已有的数据类型来定义新的 数据类型。所定义的数据类型不仅拥有新的成员,还拥有旧 的成员。 继承中,已有的用来生成新类的类称为基类/父类,由基 类派生出的新

2、类称为派生类/子类。例:继承机制继承机制汽车类轿车类卡车类客车类 单继承:派生类只从一个基类派生class : ; 多继承:派生类从多个基类派生class :, ;7.1 基类和派生类AABBC CXXY YZ Z 公有继承(public) 私有继承(private) 保护继承(protected) 7.1 基类和派生类继承方式继承方式派生类的继承方式描述 的问题是: 基类的什么访问权限 的成员可以被派生类所 访问并继承(可见性) 派生类从基类继承来 的成员在派生类中具有 什么访问权限(继承后的 特性) 公有成员(public)无论是类的成员或由类定义的对象,均可以访问的成员; 设计公有成员的

3、目的:提供给其它类/函数的接口 私有成员(private)只有类内部成员或友元才可以访问的成员; 派生类也不可以访问基类的私有成员 设计私有成员的目的:保护类的成员,实现类的封装性7.1 基类和派生类回顾:类成员的访问权限回顾:类成员的访问权限 保护成员(protected) 只有类内部成员或派生类的成员才可以访问的成 员; 设计保护成员的目的:保护类的成员不被外界访 问而只被派生类访问,实现类的继承性 7.1 基类和派生类回顾:类成员的访问权限回顾:类成员的访问权限 公有继承(public) 基类的public成员及protected成员可以被派生类访问, private成员不可以被派生类访

4、问; 基类的public成员及protected成员被派生类继承而作为派 生类的新成员时,它们的状态不变(即访问权限不变)7.1 基类和派生类派生类的三种继承方式派生类的三种继承方式基类protected成员private成员public成员派生类protected成员public成员被继承 私有继承(private) 基类的public成员及protected成员可以被派生类访问, private成员不可以被派生类访问; 基类的public成员及protected成员被派生类继承而作为派 生类的新成员时,它们会成为派生类的private成员; 基类的public成员及protected成员被

5、派生类以私有方式继 承后,不能再被派生类的子类继承 (原因:由于基类的public成员及protected成员被派生类 继承后成为派生类的private成员,而私有成员不可以再被 其子类所访问)7.1 基类和派生类派生类的三种继承方式派生类的三种继承方式 私有继承(private) 基类的public成员及protected成员可以被派生类访问, private成员不可以被派生类访问; 基类的public成员及protected成员被派生类继承而作为派 生类的新成员时,它们会成为派生类的private成员;7.1 基类和派生类派生类的三种继承方式派生类的三种继承方式基类protected成员p

6、rivate成员public成员派生类private成员private成员被继承 保护继承(protected) 基类的public成员及protected成员可以被派生类访问, private成员不可以被派生类访问; 基类的public成员及protected成员被派生类继承而作为派 生类的新成员时,它们会成为派生类的protected成员;7.1 基类和派生类派生类的三种继承方式派生类的三种继承方式基类protected成员private成员public成员派生类protected成员protected成员被继承? ?7.1 基类和派生类继承方式继承方式基类特性基类特性派生类特性派生类特性

7、public public protected protected private private public public protected protected 不可访问不可访问 publicpublic继承继承 a1:publica1:publica1:publica1:public a2:a2:不可访问不可访问a1:publica1:public a2:a2:不可访问不可访问 a3:protecteda3:protected公有继承:基类的公有成员和保公有继承:基类的公有成员和保 护成员在派生类中保持原有的访护成员在派生类中保持原有的访 问权限,私有成员不可访问问权限,私有成员不可访

8、问7.1 基类和派生类继承方式继承方式基类特性基类特性派生类特性派生类特性public public protected protected private private private private private private 不可访问不可访问 privateprivate继承继承 ? ?a1:privatea1:privatea1:privatea1:private a2:a2:不可访问不可访问a1:privatea1:private a2:a2:不可访问不可访问 a3:privatea3:private私有继承:基类的公有成员和保私有继承:基类的公有成员和保 护成员在派生类中变为

9、私有的访护成员在派生类中变为私有的访 问权限,私有成员不可访问问权限,私有成员不可访问7.1 基类和派生类继承方式继承方式基类特性基类特性派生类特性派生类特性public public protected protected private private protected protected protected protected 不可访问不可访问 protectedprotected 继承继承 ? ?a1:protecteda1:protecteda1:protecteda1:protected a2:a2:不可访问不可访问a1:protecteda1:protected a2:a2:不

10、可访问不可访问 a3:protecteda3:protected保护继承:基类的公有成员和保保护继承:基类的公有成员和保 护成员在派生类中变为保护的访护成员在派生类中变为保护的访 问权限,私有成员不可访问问权限,私有成员不可访问 图示:(从可见性分析)7.1 基类和派生类基类成员基类成员 public public protected protected private private 基类对象基类对象 继承方式继承方式 publicpublic继承继承派生类派生类 派生类对象派生类对象 a.m1=5;a.m1=5; a.m2=5;a.m2=5; a.m3=5;a.m3=5; void voi

11、d AA:fAA:f()() m1=5; m1=5;m2=5; m2=5; m3=5; m3=5; aa.m1=5aa.m1=5 ; ; aa.m2=5aa.m2=5 ; ; aa.m3=5aa.m3=5 ; ; 图示:(从可见性分析)7.1 基类和派生类基类成员基类成员 public public protected protected private private 基类对象基类对象 继承方式继承方式 privateprivate继承继承派生类派生类 派生类对象派生类对象 a.m1=5;a.m1=5; a.m2=5;a.m2=5; a.m3=5;a.m3=5; void void AA:f

12、AA:f()() m1=5; m1=5;m2=5; m2=5; m3=5; m3=5; aa.m1=5aa.m1=5 ; ; aa.m2=5aa.m2=5 ; ; aa.m3=5aa.m3=5 ; ; 图示:(从可见性分析)7.1 基类和派生类基类成员基类成员 public public protected protected private private 基类对象基类对象 继承方式继承方式 protectedprotected 继承继承派生类派生类 派生类对象派生类对象 a.m1=5;a.m1=5; a.m2=5;a.m2=5; a.m3=5;a.m3=5; void void AA:fA

13、A:f()() m1=5; m1=5;m2=5; m2=5; m3=5; m3=5; aa.m1=5aa.m1=5 ; ; aa.m2=5aa.m2=5 ; ; aa.m3=5aa.m3=5 ; ; 7.1 基类和派生类 总结:不同的继承方式下,基类中的不同访问权限的成 员被继承到派生类中访问权限不同: public继承:基类中不同访问权限的成员被继承到派 生类中访问权限不变,private成员不可访问 private继承:基类中public及protected成员被继承到 派生类中成为private成员,private成员不可访问 protected继承:基类中public及protecte

14、d成员被继承 到派生类中成为protected成员,private成员不可访 问7.1 基类和派生类 总结:基类中的私有成员只能被基类的成员函数或友元 访问,而不能被基类对象、派生类或派生类对象访 问: 只有基类的对象或public继承方式生成的派生类对 象才可以操作基类的public成员,其他对象(非 public继承生成的派生类对象)都不可以访问基类的 public成员; 基类的private及protected成员为任何对象均不可 见。7.1 基类和派生类缺省继承方式:缺省继承方式: 默认为默认为privateprivate继承继承AA的的 成员函数成员函数public:public:

15、void void f(intf(int) )public:public: void g( void g( ) )继承继承 BB的的 成员函数成员函数private:private: void void f(intf(int) )private:private: void g( void g( ) )7.1 基类和派生类7.1 基类和派生类/将基类的公有成员说明为派生类的公将基类的公有成员说明为派生类的公 有成员有成员7.1 基类和派生类/派生类对象访问派生类的公有成员派生类对象访问派生类的公有成员7.1 基类和派生类/派生类对象访问派生类的私有成员派生类对象访问派生类的私有成员使程序正确运行:使程序正确运行:使程序正确运行:使程序正确运行: 方式方式:/d1.g();/d1.g();使程序正确运行:使程序正确运行: 方式方式:/d1.g();/d1.g(); 方式方式:pub

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号