多态性

王朝百科·作者佚名  2009-12-04  
宽屏版  字体: |||超大  

多态性就是多种表现形式,具体来说,可以用"一个对外接口,多个内在实现方法"表示。举一个例子,计算机中的堆栈可以存储各种格式的数据,包括整型,浮点或字符。不管存储的是何种数据,堆栈的算法实现是一样的。针对不同的数据类型,编程人员不必手工选择,只需使用统一接口名,系统可自动选择。

多态性也分静态多态性和动态多态性两种。静态多态性是指定义在一个类或一个函数钟的同名函数,它们根据参数表(类型以及个数)区别语义,并通过静态联编实现,例如,在一个类中定义的不同参数的构造函数。动态多态性是指定义在一个类层次的不同类钟的重载函数,它们一般具有相同的函数,因此要根据指针指向的对象所在类来区别语义,它通过动态联编实现。

“多态性”一词最早用于生物学,指同一种族的生物体具有相同的特性。在面向对象理论中,多态性的定义是:同一操作作用于不同的类的实例,将产生不同的执行结果,即不同类的对象收到相同的消息时,得到不同的结果。多态性包含编译时的多态性 运行时的多态性两大类。

动态多态是指发出同样的消息被不同类型的对象接收时,有可能导致完全不同的行为。即,在用户不作任何干预的环境下,类的成员函数的行为能根据

调用它的对象类型自动作出适应性调整,而且调整是发生在程序运行时。

多态是面向对象程序设计的重要特征之一。是扩展性在“继承”之后的又一重大表现 。

举例子说明一下:

#include <iostream.h>

class A {

public:

virtual void test() { cout<<"aaa"<<endl; } //运行时的多态性,如果不加virtual就是编译时的多态

//void test() { cout<<"aaa"<<endl; }//编译时的多态性

};

class B:public A

{

public:

void test() {cout<<"bbb"<<endl;}

};

class C:public B

{

public:

void test() {cout<<"ccc"<<endl;}

};

void main()

{

C cc;

A *p=&cc;

p->test();

}

 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝百科 版权所有