C++课件1-10章7-继承

上传人:E**** 文档编号:90581949 上传时间:2019-06-13 格式:PPT 页数:117 大小:1.34MB
返回 下载 相关 举报
C++课件1-10章7-继承_第1页
第1页 / 共117页
C++课件1-10章7-继承_第2页
第2页 / 共117页
C++课件1-10章7-继承_第3页
第3页 / 共117页
C++课件1-10章7-继承_第4页
第4页 / 共117页
C++课件1-10章7-继承_第5页
第5页 / 共117页
点击查看更多>>
资源描述

《C++课件1-10章7-继承》由会员分享,可在线阅读,更多相关《C++课件1-10章7-继承(117页珍藏版)》请在金锄头文库上搜索。

1、第7章 继承,7.1 类之间的关系,7.2 基类和派生类,7.3 基类的初始化,7.4 继承的应用实例,7.5 多继承,小结,7.1 类之间的关系,has-A,uses-A 和 is-A has-A 包含关系,用以描述一个类由多个“部件类”构成。实现has-A关系用类成员表示,即一个类中的数据成员是另一种已经定义的类。 uses-A 一个类部分地使用另一个类。通过类之间成员函数的相互联系,定义友员或对象参数传递实现。 is-A 机制称为“继承”。关系具有传递性,不具有对称性。,7.1 类之间的关系,不具有对称性 不是所有植物都属于蕨类,传递性 高等植物、蕨类植物、芒萁都是植物,具有植物的共同特

2、征,植物,7.1 类之间的关系,继承 是类之间定义的一种重要关系 一个 B 类继承A类,或称从类 A 派生类 B 类 A 称为基类(父类),类 B 称为派生类(子类),A,C3,B1,B2 的基类,A 的派生类 C1,C2,C3 的基类,A 的派生类(单继承) C3的基类,B1,B2 的派生类(多继承),B1 的派生类,类继承关系的语法形式 class 派生类名 : 基类名表 数据成员和成员函数声明 ;,7.2 基类和派生类,类继承关系的语法形式 class 派生类名 : 基类名表 数据成员和成员函数声明 ;,7.2 基类和派生类,基类名表 构成 访问控制 基类名1, 访问控制 基类名2 ,

3、, 访问控制 基类名n,类继承关系的语法形式 class 派生类名 : 基类名表 数据成员和成员函数声明 ;,7.2 基类和派生类,基类名表 构成 访问控制 基类名1, 访问控制 基类名2 , , 访问控制 基类名n,访问控制 表示派生类对基类的继承方式,使用关键字: public 公有继承 private 私有继承 protected 保护继承,派生类对基类成员的使用,与继承访问控制和基类中成员性质有关 公有继承 基类的公有成员派生类的公有成员 基类的保护成员派生类的保护成员 私有继承 基类的公有成员和保护成员派生类的私有成员 保护继承 基类的公有成员和保护成员派生类的保护成员 不论种方式继

4、承基类,派生类都不能直接使用基类的私有成员,7.2.1 访问控制,7.2.1 访问控制,7.2.1 访问控制,1.公有继承,#include class A public : void get_XY() cout x y ; void put_XY() cout h ; int get_V() return v ; void make_V() make_S(); v = get_S() * h ; / 使用基类成员函数 protected: int h, v; ;,例7-1 公有继承的测试,7.2.1 访问控制,#include class A public : void get_XY() c

5、out x y ; void put_XY() cout h ; int get_V() return v ; void make_V() make_S(); v = get_S() * h ; / 使用基类成员函数 protected: int h, v; ;,7.2.1 访问控制,例7-1 公有继承的测试,#include class A public : void get_XY() cout x y ; void put_XY() cout h ; int get_V() return v ; void make_V() make_S(); v = get_S() * h ; / 使用基

6、类成员函数 protected: int h, v; ;,保护数据成员 在类层次中可见,7.2.1 访问控制,例7-1 公有继承的测试,void main() A objA ; B objB ; C objC ; cout “It is object_A :n“ ; objA.get_XY() ; objA.put_XY() ; cout “It is object_B :n“ ; objB.get_XY() ; objB.make_S() ; cout “S = “ objB.get_S() endl ; cout “It is object_C :n“ ; objC.get_XY() ;

7、objC.get_H(); objC.make_V() ; cout “V = “ objC.get_V() endl ; ,7.2.1 访问控制,例7-1 公有继承的测试,void main() A objA ; B objB ; C objC ; cout “It is object_A :n“ ; objA.get_XY() ; objA.put_XY() ; cout “It is object_B :n“ ; objB.get_XY() ; objB.make_S() ; cout “S = “ objB.get_S() endl ; cout “It is object_C :n“

8、 ; objC.get_XY() ; objC.get_H(); objC.make_V() ; cout “V = “ objC.get_V() endl ; ,7.2.1 访问控制,例7-1 公有继承的测试,void main() A objA ; B objB ; C objC ; cout “It is object_A :n“ ; objA.get_XY() ; objA.put_XY() ; cout “It is object_B :n“ ; objB.get_XY() ; objB.make_S() ; cout “S = “ objB.get_S() endl ; cout

9、“It is object_C :n“ ; objC.get_XY() ; objC.get_H(); objC.make_V() ; cout “V = “ objC.get_V() endl ; ,x y,7.2.1 访问控制,例7-1 公有继承的测试,void main() A objA ; B objB ; C objC ; cout “It is object_A :n“ ; objA.get_XY() ; objA.put_XY() ; cout “It is object_B :n“ ; objB.get_XY() ; objB.make_S() ; cout “S = “ ob

10、jB.get_S() endl ; cout “It is object_C :n“ ; objC.get_XY() ; objC.get_H(); objC.make_V() ; cout “V = “ objC.get_V() endl ; ,x y,s,7.2.1 访问控制,例7-1 公有继承的测试,void main() A objA ; B objB ; C objC ; cout “It is object_A :n“ ; objA.get_XY() ; objA.put_XY() ; cout “It is object_B :n“ ; objB.get_XY() ; objB.

11、make_S() ; cout “S = “ objB.get_S() endl ; cout “It is object_C :n“ ; objC.get_XY() ; objC.get_H(); objC.make_V() ; cout “V = “ objC.get_V() endl ; ,对 objA 的 数据成员操作,x y,s,h v,7.2.1 访问控制,例7-1 公有继承的测试,void main() A objA ; B objB ; C objC ; cout “It is object_A :n“ ; objA.get_XY() ; objA.put_XY() ; cou

12、t “It is object_B :n“ ; objB.get_XY() ; objB.make_S() ; cout “S = “ objB.get_S() endl ; cout “It is object_C :n“ ; objC.get_XY() ; objC.get_H(); objC.make_V() ; cout “V = “ objC.get_V() endl ; ,调用基类A成员函数 对 objB 的数据成员操作,x y,s,h v,7.2.1 访问控制,例7-1 公有继承的测试,void main() A objA ; B objB ; C objC ; cout “It

13、 is object_A :n“ ; objA.get_XY() ; objA.put_XY() ; cout “It is object_B :n“ ; objB.get_XY() ; objB.make_S() ; cout “S = “ objB.get_S() endl ; cout “It is object_C :n“ ; objC.get_XY() ; objC.get_H(); objC.make_V() ; cout “V = “ objC.get_V() endl ; ,调用派生类B成员函数 对 objB 的数据成员操作,x y,s,h v,7.2.1 访问控制,例7-1

14、公有继承的测试,void main() A objA ; B objB ; C objC ; cout “It is object_A :n“ ; objA.get_XY() ; objA.put_XY() ; cout “It is object_B :n“ ; objB.get_XY() ; objB.make_S() ; cout “S = “ objB.get_S() endl ; cout “It is object_C :n“ ; objC.get_XY() ; objC.get_H(); objC.make_V() ; cout “V = “ objC.get_V() endl

15、; ,调用基类A成员函数 对 objC 的数据成员操作,x y,s,h v,7.2.1 访问控制,例7-1 公有继承的测试,void main() A objA ; B objB ; C objC ; cout “It is object_A :n“ ; objA.get_XY() ; objA.put_XY() ; cout “It is object_B :n“ ; objB.get_XY() ; objB.make_S() ; cout “S = “ objB.get_S() endl ; cout “It is object_C :n“ ; objC.get_XY() ; objC.get_H(); objC.make_V() ; cout “V = “ objC.get_V() endl ; ,调用派生类C成员函数 对 objC 的数据成员操作,x y,s,h v,7.2.1 访问控制,例7-1 公有继承的测试,void main() A objA ; B objB ; C objC ; cout “It is object_A :n“ ; objA.get_XY() ; objA.put_XY() ; cout “It is object_B :n“ ; objB.get_XY() ; objB.make_S() ; cout “

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

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