多态性 概述

来源:互联网 发布:风险矩阵分析图 编辑:程序博客网 时间:2024/06/03 14:33

多态(Polymorphism)按字面的意思就是“多种状态”。
在面向对象语言中,接口的多种不同的实现方式即为多态。


多态(Polymorphism),是指面向对象程序运行时,相同的信息可能会送给多个不同的类型之对象,
而系统可依据对象所属类型,引发对应类型的方法,而有不同的行为。
简单来说,所谓多态意指相同的信息给予不同的对象会引发不同的动作称之。


在面向对象程序设计中,多态一般指子类型多态(Subtype polymorphism)。


面向对象的精神在于多态。
多态分成静态多态(Static Polymorphism)与动态多态(Dynamic Polymorphism)。


一般的多态,是指动态多态,系使用继承和动态绑定(Dynamic Binding)实现,使用多态可创建起继承体系(Inheritancehierarchy)。
类型(class)与继承只是达成多态中的一种手段,所以称面向对象而非类型导向。


CharlieCalverts对多态的描述——多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,
赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作(摘自“Delphi4编程技术内幕”)。


多态指同一个实体同时具有多种形式。它是面向对象程序设计(OOP)的一个重要特征。
如果一个语言只支持类而不支持多态,只能说明它是基于对象的,而不是面向对象的。


C++ 语言支持的
动态多态必须结合继承和动态绑定(DynamicBinding)方式实现。
静态多态是指编译时决定的多态,包括重载和以模板(template)实现多态的方法即参数化型态(ParameterizedTypes),
是使用巨集(大陆一般称之为“宏”)(marco)的“代码膨胀法”达到多态效果。


类型转换(type cast)也是一种区域(ad hoc)多态的概念,
C++提供 dynamic_cast, static_cast等运算对象来实现强制类型转换(Coercion)。
运算对象重载(operator overloading)或函数重载(function overloading)也算是多态的概念。


C++中,实现多态有以下方法:虚函数,抽象类,重载,覆盖,模版。
原创粉丝点击