多态性概念
多态是面向对象程序设计的重要特征之一,它与封装、继承共同构成了面向对象程序设计的三大特征。多态是指不同的对象接收到相同的操作指令时,产生不同的动作。在程序中表现为,不同功能的函数在不同的类中具有相同的函数名,相应的类对象在调用同名函数时会执行不同的动作。
现实生活中有很多多态概念的体现。例如各种品牌、不同型号的手机都具有开、关机的功能,若想打开手机都会通过向手机发送开机指令来实现,但是不同的手机开机时执行的行为却各不相同,初始化的硬件、启动的程序都会有差异。还有自然界中的各种动物都有叫声,但不同动物的叫声却千差万别,如猫是喵喵叫,狗是汪汪叫,对于这种多态的体现可以用一幅图来描述,如图1所示。
图1 多态实例
在面向对象程序设计中,多态性主要体现在:向不同的对象发送同一个消息,不同对象接收到消息时会产生不同的行为,即每个对象以自己的方式响应同样的消息。
C++程序设计中,消息即对类的成员函数的调用,不同的行为是指不同的实现,也就是调用不同的函数。因此,多态的本质是指同一个函数的多种形态。
C++语言支持的多态可以按照实现的时机分为编译时多态和运行时多态两种:
1、 编译时多态又称静态联编,是指程序在编译时就可确定的多态性,通过重载机制实现。
2、运行时多态称为动态联编,是指必须在运行中才可确定的多态性,通过继承和虚函数实现。