6、多态性-1、多态性概述

面向对象程序设计的真正力量不仅仅在于继承,而在于将派生类对象当基类对象一样处理的能力。支持这种能力的机制称为多态和动态绑定。

1、多态是指同样的消息被不同类型的对象接收时导致不同的行为,所谓消息是指对类的成员函数的调用,不同的行为是指不同的实现,也就是调用了不同的函数。

2、多态类型

面向对象的多态性可以分为四类,重载多态、强制多态、包含多态和参数多态,前两种称为专用多态,后两种称为通用多态

我们学习过的普通函数及类的成员函数的重载都属于重载多态。强制多态是指将一个变元的类型加以变化,以符合一个函数或者操作的要求,如加法运算符在进行浮点数与整型数相加时,首先进行类型强制转换,把整型变为浮点型再相加的情况,就是强制多态的实例。

包含多态是研究类族中定义于不同类中的同名成员函数的多态行为,主要是通过虚函数来实现

参数多态与类模板相关联,在使用时必须赋予实际的类型才可以实例化。这样,由类模板实例化的各个类都具有相同的操作,而操作对象的类型却各不相同。

3、多态的实现

多态从实现的角度来讲可以划分为两类:编译时的多态和运行时的多态。前者是在编译的过程中确定了同名操作的具体操作对象,而后者则是在程序运行过程中才动态确定操作所针对的具体对象。这种确定操作的具体对象的过程就是绑定(binding,也叫做联编)。绑定是指计算机程序自身彼此关联的过程,也就是把一个标识符名和一个存储地址联系在一起的过程;用面向对象的术语讲,就是把一条消息和一个对象的方法相结合的过程。

绑定阶段不同分为:静态绑定和动态绑定,这两种绑定过程中分别对应着多态的两种实现方式。

绑定工作在编译连接阶段完成的情况称为静态绑定。比如,重载、强制和参数多态。

绑定工作在程序运行阶段完成的情况称为动态绑定。如包含多态操作对象的确定就是通过动态绑定完成的。

 

posted on 2017-01-04 00:36  gary_123  阅读(441)  评论(0编辑  收藏  举报

导航