面向对象程序设计多态性

面向对象程序设计多态性

ID:47003437

大小:272.16 KB

页数:66页

时间:2019-12-03

面向对象程序设计多态性_第1页
面向对象程序设计多态性_第2页
面向对象程序设计多态性_第3页
面向对象程序设计多态性_第4页
面向对象程序设计多态性_第5页
资源描述:

《面向对象程序设计多态性》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第九章多态性本章概要:多态性是面向对象程序设计的第四个基本特点。从字面上解释,所谓多态性就是“有许多种形态”。基于这种理解,可以认为函数重载和运算符重载是多态性的最简单形式。面向对象程序设计第二版讲义制作:北京信息工程学院信息与计算科学专业05141班曹硕但是,在面向对象程序设计领域,所谓多态性通常特指下述机制:派生类对象可以像基类对象一样使用,同样的消息既可以发送给基类对象也可以发送给派生类对象。也就是说,在类等级的不同层次中可以共享一个行为的名字,但是不同层次中的类却各自按自己的需要来实现这个行为。简而言之:在不同的类层次中,同一个消息被不同的

2、对象接收,产生了不同的行为。当一个对象接收到发送给它的消息时,根据该对象所属于的类动态选用在该类中定义的实现算法。多态性机制不仅增加了面向对象软件系统的灵活性,进一步减少了冗余信息,而且显著提高了软件的可重用性和可扩充性。本章主要讲述,静态联编与动态联编,虚函数的声明与使用,虚函数应用实例,纯虚函数,多态性带来的好处等内容。本章快速索引面向对象程序设计第二版9.1静态联编与动态联编9.2虚函数的声明与使用9.3虚函数应用实例之一9.4纯虚函数9.5虚函数应用实例之二9.6多态性带来的好处9.7小结9.1静态联编与动态联编所谓联编(tinding

3、),就是使一个计算机程序的不同部分彼此关联的过程。静态联编在编译阶段完成,因为所有联编过程都在程序开始运行之前完成,因此静态联编也叫先前联编或早期联编。面向对象程序设计第二版编译程序在编译时并不确切知道应把发送到对象的消息和实现消息的哪段具体代码联编在一起,而是在运行时才能把函数调用与函数体联系在一起,则称为动态联编。9.1.1静态联编对重载函数的调用是在编译阶段完成联编的,有下述3种区分重载函数的方法:⒈根据实参特征来区分。⒉使用作用域分辨符加以区分。⒊根据对象的类型来区分。面向对象程序设计第二版下面让我们看一个简单程序例子:#include"s

4、tdafx.h"#include"iostream.h"classBase{public:voidWho(){cout<<"Iambaseclass";}};classFirstDerived:publicBase{public:voidWho(){cout<<"Iamfirstderivedclass";}};classSecondDerived:publicBase{public:voidWho(){cout<<"Iamsecondderivedclass";}};voidmain(){Basebase_obj;Base*p;//声

5、明一个指向基类的指针PFirstDerivedfirst_obj;SecondDerivedsecond_obj;p=&base_obj;p->Who();p=&first_obj;p->Who();p=&second_obj;p->Who();first_obj.Who();second_obj.Who();}运行输出结果:IambaseclassIambaseclassIambaseclassIamfirstderivedclassIamsecondderivedclass9.1.2动态联编如果随着指针P实际指向的对象不同,使用语句P->Who

6、();能够调用不同类中Who的相同版本,我们就可以用相同的界面P->Who()访问函数Who的多个实现版本,从而也就能够在程序运行时告诉用户,当时指针P实际指向何类对象。面向对象程序设计第二版函数调用P->Who()依赖于程序运行时P的值。虚函数提供的就是这样一种机制。把由指针调用的成员函数声明为虚函数,则声明为指向基类对象的指针,可以根据它在程序运行过程中当时实际指向的对象类型,通过动态联编调用相应类中的虚函数。#includeclassstudent{public:voidcalct(){cout<<"studentxu

7、efei"<

8、ut<<"Iambaseclass";}};面向对象程序设计第二版classFirstDerived:publicBa

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。