欢迎来到天天文库
浏览记录
ID:56529658
大小:271.50 KB
页数:51页
时间:2020-06-27
《大学基础教程第十一章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C++大学基础教程第11章多态性2021/7/281多态性(Polymorphism)是面向对象程序设计的主要特征之一。多态性对于软件功能的扩展和软件重用都有重要的作用。2021/7/282第十一章多态性11.1多态性的概念11.2继承中的静态联编11.3虚函数和运行时的多态11.4纯虚函数和抽象类11.5继承和派生的应用11.6模板2021/7/28311.1多态性的概念2021/7/28411.1.1面向对象程序设计中多态的表现不同对象对于相同的消息有不同的响应,就是面向对象程序设计中的多态性两种表现方式:同一个对象调用名字相同、但
2、是参数不同的函数,表现出不同的行为。在同一个类中定义的重载函数的调用,属于这种情况。不同的对象调用名字和参数都相同的函数,表现出不同的行为。在派生类的应用中,经常会看到这样的调用。2021/7/28511.1.2多态的实现:联编一个具有多态性的程序语句,在执行的时候,必须确定究竟是调用哪一个函数多态性的语句究竟调用哪个函数的过程称为联编(Binding),有的资料也翻译成“绑定”。2021/7/28611.1.2多态的实现:联编联编有两种方式:静态联编和动态联编在源程序编译的时候就能确定调用哪个函数,称为静态联编对于重载函数的调用就是在
3、编译的时候确定具体调用哪个函数,所以是属于静态联编2021/7/28711.1.2多态的实现:联编动态联编:必须在程序运行时,才能够确定具有多态性的语句究竟调用哪个函数用动态联编实现的多态,也称为运行时的多态。2021/7/28811.2继承中的静态联编2021/7/28911.2.1派生类对象调用同名函数在派生类中可以定义和基类中同名的成员函数这是对基类进行改造,为派生类增加新的行为的一种常用的方法通过不同的派生类的对象,调用这些同名的成员函数实现不同的操作,是多态性的一种在程序编译的时候,就可以确定对象具体调用哪个成员函数___静态
4、联编2021/7/2810例11.1定义Circle类和Rectangle类为Shape类的派生类,通过Circle类和Rectangle类的对象调用同名函数getArea()显示对象的面积。//例11.1:shape.h#ifndefSHAPE_H#defineSHAPE_HclassShape{public:doublegetArea()const;voidprint()const;};//Shape类定义结束基类Shape的定义2021/7/2811classCircle:publicShape{public:Circle(int
5、=0,int=0,double=0.0);doublegetArea()const;//返回面积voidprint()const;//输出Circle类对象tprivate:intx,y;//圆心座标doubleradius;//圆半径};//派生类Circle定义结束classRectangle:publicShape{public:Rectangle(int=0,int=0);//构造函数doublegetArea()const;//返回面积voidprint()const;//输出Rectangle类对象private:inta,
6、b;//矩形的长和宽};//派生类Rectangle定义结束#endif派生类Circle的定义派生类Rectangle的定义2021/7/2812//例11.1:shape.cpp#includeusingnamespacestd;#include"shape.h"doubleShape::getArea()const{cout<<"基类的getArea函数,面积是";return0.0;}//Shape类getArea函数的定义voidShape::print()const{cout<<"BaseclassObj
7、ect"<8、Circle::print()const{cout<<"centeris";cout<<"x="<
8、Circle::print()const{cout<<"centeris";cout<<"x="<
此文档下载收益归作者所有