首页 理论教育 多态概述-计算机软件开发应用研究

多态概述-计算机软件开发应用研究

时间:2023-10-17 理论教育 版权反馈
【摘要】:多态性是面向对象程序设计核心概念之一。静态多态主要是通过函数重载和运算符重载实现的。动态多态是运行阶段完成的。

多态概述-计算机软件开发应用研究

多态性是面向对象程序设计核心概念之一。所谓多态就是指同一个名字有不同的语义,或者不同的对象收到相同的消息产生的动作不同。具体实现时,常常会用同一个名字定义不同的函数,这些函数执行不同但又类似的操作,从而可以使用相同的调用方式来调用这些具有不同功能的同名函数。

▶5.6.4.1 问题的提出

当人们“画图”时,以一点为中心一定长度为半径进行平面绘画得到图形“圆形”;以一点为中心一定长度为半径进行空间绘画得到图形“球形”;而以一定长度和一定宽度绘画得到图形“矩形”;甚至可以以此得出各种各样的图形。同样的“画图”(名字)因为方法的不同(动作)可以得到各种各样的图形(结果),也就是相同的名字因为采用的动作不同而得到不同的结果,虽然动作不同但却相似,这就是多态。

例如用draw()函数描述“画图”,实现“画圆形”“画球形”和“画矩形”的不同功能,而向外只用draw()函数来接口(见图5-5),最终实现画出“圆形”“球形”和“矩形”的功能。

图5-5 多态“画图”

在C语言系统库函数中,用fabs函数实现求实型数据的绝对值,而用abs函数实现求整型数据的绝对值。在C++中可以将求绝对值函数统一命名为div,定义一个形参是整型的div函数,同时再定义一个形参为实型的div函数。当调用div函数时,系统会根据实际参数是实型而选择形参为实型的div函数,实际参数是整型选择形参为整型的div函数,从而实现一个函数名(div)实现不同的功能(求整型绝对值功能和求实型绝对值功能)。

多态性在具体实现时常常以函数的方式进行,这些函数名称相同,但功能不同。C++中多态常常体现在三个方面:函数重载、运算符重载、虚函数。

▶5.6.4.2 多态的实现(www.xing528.com)

根据多态的实现时机,可以将多态分为静态多态和动态多态。多态可以体现在系统编译时的多态,称为静态多态,也可以体现在系统运行时的多态,称为动态多态。

静态多态是在编译阶段完成的。系统在编译时就决定了如何实现某一动作,即调用哪个函数,也就是在形成可执行文件之前就确定了调用方式。

静态多态的优点是运行速度快,执行效率高;缺点是不灵活,程序太直接,太表面化。

静态多态主要是通过函数重载和运算符重载实现的。

动态多态是运行阶段完成的。系统在运行时实现某一动作,也就是说系统在运行时才决定运行哪个函数的。

动态多态的优点是灵活,层次高,技巧性高;缺点是效率低,但由于现在计算机速度很快,所以一般不再考虑其运行效率问题。

动态多态主要是通过虚函数来实现的。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈