继承与多态精选文档.ppt
《继承与多态精选文档.ppt》由会员分享,可在线阅读,更多相关《继承与多态精选文档.ppt(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、继承与多态本讲稿第一页,共二十六页第8章 继承与多态 静态多态的实现动态多态的实现纯虚函数与抽象基类静态多态的实现动态多态的实现动态多态的实现 掌握静态多态的实现 掌握动态多态的实现熟悉纯虚函数与抽象基类的应用本讲稿第二页,共二十六页8.2 多态性8.2.1 多态的含义,实现意义及分类第8章 继承与多态多态(polymorphism)一词最初来源于希腊语polumorphos,含义是具有多种形式或形态的现象。在程序设计领域,一个广泛认可的定义是“一种将不同的特殊行为和单个泛化记号相关联的能力”,这里的泛化记号其实指的就是函数名。多态的含义本讲稿第三页,共二十六页8.2 多态性8.2.1 多态的
2、含义,实现意义及分类第8章 继承与多态C+程序中允许大量的同名函数出现,体现出多态的使用价值。多态的意义1)对不同的数据类型,采用相同或是相似的操作时,使用同名函数。2)在程序运行中,在某个环节要调用对象的一个特定的方法,而不管这个对象是由哪一个类创建的,这些类都支持这种方法。本讲稿第四页,共二十六页8.2 多态性8.2.1 多态的含义,实现意义及分类第8章 继承与多态C+程序中,按照实现机制,多态可以分为两种多态的类型C+语言允许函数重载和运算符重载,使用同样的函数名和同样的运算符来完成不同的数据处理与操作。C+语言程序中允许存在有若干函数,有完全相同的函数原型,却可以有多种多样的相异的函数
3、体。overloadingoverriding本讲稿第五页,共二十六页8.2 多态性8.2.2 静态多态的实现方法第8章 继承与多态函数重载指的是,允许多个不同函数使用同一个函数名,但要求这些同名函数具有不同的参数表(当然,函数体的实现代码通常也不同)。系统对这种多态性,对同名函数的处理比较简单。在编译过程中就可以确定该函数与程序中的哪一段代码相联系,即在编译时就已确定函数调用语句对应的函数体代码,故称为静态联编(static banding)处理方式。本讲稿第六页,共二十六页8.2 多态性8.2.2 静态多态的实现方法第8章 继承与多态示例void run(int a);void run(f
4、loat a);run(1);run(1.0);本讲稿第七页,共二十六页8.2 多态性8.2.3 动态多态的实现方法第8章 继承与多态C+语言程序中允许存在有若干函数,有完全相同的函数原型,却可以有多种多样的相异的函数体,这种现象称为函数的覆盖。在编译阶段,系统是无法判断此次调用应执行哪一段函数代码。只有到了运行过程中执行到此处时,才能临时判断应执行哪一段函数代码,这种处理方式称为动态联编(dynamic banding)。本讲稿第八页,共二十六页8.2 多态性8.2.3 动态多态的实现方法1.虚函数第8章 继承与多态虚函数是C+语言中的重要概念。虚函数在编程中的灵活使用,可使程序具有更好的结
5、构和可重用性。virtual 返回类型 函数名(参数表);示例virtual void run(int a);本讲稿第九页,共二十六页8.2 多态性8.2.3 动态多态的实现方法1.虚函数第8章 继承与多态虚函数常用于基类与派生类中class graphelem /自定义类graphelem,将作为其它图元类的基类protected:int color;/颜色colorpublic:graphelem(int col)color=col;virtual void draw();/基类中含有一个虚函数virtual graphelem();基类本讲稿第十页,共二十六页8.2 多态性8.2.3 动
6、态多态的实现方法1.虚函数第8章 继承与多态虚函数常用于基类与派生类中class line:public graphelem/自定义类line,为基类graphelem 的派生类public:virtual void draw();/虚函数draw,负责画出“line”.;class circle:public graphelem/自定义类circle,为基类graphelem 的派生类public:virtual void draw();/虚函数draw,负责画“circle”;派生类本讲稿第十一页,共二十六页8.2 多态性8.2.3 动态多态的实现方法1.虚函数第8章 继承与多态使用虚函数
7、时,需要注意以下3点说明某一函数成员为虚函数,方法是在说明前加关键字“virtual”。派生类中虚函数处的关键字virtual可以省略,但基类处的不可省调用虚函数时,系统对它将采用动态联编的方式进行处理。本讲稿第十二页,共二十六页8.2 多态性8.2.3 动态多态的实现方法2.动态联编的机制第8章 继承与多态使用动态联编时,确定要调用的函数有两种方式line ln1;circle cir1;triangle tri1;ln1.draw();cir1.draw();tri1.draw();通过类对象本讲稿第十三页,共二十六页8.2 多态性8.2.3 动态多态的实现方法2.动态联编的机制第8章 继
8、承与多态使用动态联编时,确定要调用的函数有两种方式graphelem*pObj;line ln1;circle cir1;triangle tri1;pObj=&lin1;pObj-draw();pObj=&cir1;pObj-draw();pObj=&tri1;pObj-draw();通过指针本讲稿第十四页,共二十六页8.2 多态性8.2.3 动态多态的实现方法2.动态联编的机制第8章 继承与多态动态联编的基本步骤在编译过程中,扫描到表达式pb-f()时,首先检查f()是否为虚函数(若()不是虚函数,则按静态联编处理,在编译时必须为f()确定对应的函数体代码);(2)若()为虚函数,则仅把与
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 继承 精选 文档
限制150内