面向对象程序设计PPT课件.ppt
《面向对象程序设计PPT课件.ppt》由会员分享,可在线阅读,更多相关《面向对象程序设计PPT课件.ppt(62页珍藏版)》请在优知文库上搜索。
1、面向对象程序设计面向对象程序设计第第5 5章章 多态与抽象类多态与抽象类n 5.1 5.1 类层次的多态问题类层次的多态问题n 5.2 5.2 类型兼容规则类型兼容规则( (重点重点) )n 5.3 5.3 多态的概念多态的概念n 5.4 5.4 多态的分类多态的分类n 5.5 5.5 联编联编n 5.6 5.6 虚函数虚函数( (重点重点) )n 5.7 5.7 抽象类与纯虚函数抽象类与纯虚函数( (重点重点) )第5章多态与抽象类2023-4-43n【例【例5-15-1】在例】在例4-14-1程序中存在的两个程序中存在的两个不足:不足:(1 1)基类)基类Pay()Pay()和和Displ
2、ay()Display()的函数体均为空,的函数体均为空,在实现部分仍要写出函数体,显得冗余。在实现部分仍要写出函数体,显得冗余。(2 2)在主函数中,建立了)在主函数中,建立了4 4个不同类的对象,个不同类的对象,进行了类似的操作,重复写了进行了类似的操作,重复写了4 4遍类似的语句遍类似的语句,程序不够简洁。,程序不够简洁。第5章多态与抽象类2023-4-44n基类设置成员函数基类设置成员函数Pay()Pay()和和Display()Display()的目的是为了统一规定类簇的基本行的目的是为了统一规定类簇的基本行为,虽有冗余,但也必要。为此,为,虽有冗余,但也必要。为此,C+C+提供了纯
3、虚函数来解决此问题。提供了纯虚函数来解决此问题。 第5章多态与抽象类2023-4-45n在主函数中建立了在主函数中建立了4 4个不同类的对象,进行个不同类的对象,进行了类似的操作,重复写了了类似的操作,重复写了4 4遍类似的语句。遍类似的语句。n应该怎样有效地来处理它们同样的行为呢应该怎样有效地来处理它们同样的行为呢?我们首先想到的是用循环解决,但调用?我们首先想到的是用循环解决,但调用这些同名函数的对象却不相同。这些同名函数的对象却不相同。n分析这些对象有一个共同点,那就是来自分析这些对象有一个共同点,那就是来自于同一个基类,而基类与派生类对象有什于同一个基类,而基类与派生类对象有什么关系呢
4、?事实上,它们遵循类型兼容规么关系呢?事实上,它们遵循类型兼容规则。则。第5章多态与抽象类2023-4-46Employee Employee * *emp4=&m1,&t1,&s1,&sm1; /emp4=&m1,&t1,&s1,&sm1; /声明声明抽象类指针数组抽象类指针数组for(int i=0;i4;i+)for(int i=0;iPay(); /empi-Pay(); /单一指令,实现多态,单一指令,实现多态,计算指针指向对象的工资计算指针指向对象的工资empi-Display();/empi-Display();/单一指令,实现多态,单一指令,实现多态,输出指针指向对象的信息输出
5、指针指向对象的信息 第5章多态与抽象类2023-4-47n类型兼容规则是指在需要基类对象的类型兼容规则是指在需要基类对象的任何地方,都可以使用公有派生类的任何地方,都可以使用公有派生类的对象来替代。对象来替代。第5章多态与抽象类2023-4-48n通过公有继承,派生类得到了基类中通过公有继承,派生类得到了基类中除构造函数、析构函数之外的所有成除构造函数、析构函数之外的所有成员。这样,员。这样,公有派生类实际就具备了公有派生类实际就具备了基类的所有功能基类的所有功能,凡是基类能解决的,凡是基类能解决的问题,公有派生类都可以解决。问题,公有派生类都可以解决。 第5章多态与抽象类2023-4-49n
6、类型兼容规则中所指替代包括以下情类型兼容规则中所指替代包括以下情况:况:(1 1)派生类的对象可以赋值给基类的对象。)派生类的对象可以赋值给基类的对象。(2 2)派生类的对象可以初始化基类的引用。)派生类的对象可以初始化基类的引用。(3 3)派生类的对象的地址可以赋值给基类的指)派生类的对象的地址可以赋值给基类的指针变量。针变量。n在替代之后,派生类对象就可以作为在替代之后,派生类对象就可以作为基类的对象使用,但只能访问从基类基类的对象使用,但只能访问从基类继承的成员。继承的成员。第5章多态与抽象类2023-4-410n【例【例5-35-3】示例类型兼容规则的应用。】示例类型兼容规则的应用。n
7、教材教材P261P261,该程序的运行结果为:,该程序的运行结果为:Base classBase classBase classBase classBase classBase classDerivel classDerivel classDerive2 class Derive2 class 第5章多态与抽象类2023-4-411n根据类型兼容规则,基类指针根据类型兼容规则,基类指针p p可以指可以指向派生类对象向派生类对象obj2obj2、obj3obj3(即派生类(即派生类对象可以代替基类对象,给基类指针对象可以代替基类对象,给基类指针赋值),但编译时,编译器根据赋值),但编译时,编译器
8、根据p p的类的类型是基类型,自动调用基类的型是基类型,自动调用基类的who()who(),所以结果如上所示。所以结果如上所示。 第5章多态与抽象类2023-4-412n【思考题【思考题5-35-3】如果基类指针要访问派】如果基类指针要访问派生类的生类的who()who(),怎么办?,怎么办?n nC+C+提供了多态机制来解决这个问题。提供了多态机制来解决这个问题。n类型兼容规则是类型兼容规则是C+C+多态的重要基础。多态的重要基础。 第5章多态与抽象类2023-4-413n多态(多态(PolymorphismPolymorphism)是指具有相似)是指具有相似功能的不同函数使用同一个名称来实
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 PPT 课件