当前位置:首页 > 百科

多态

在编程语言来自和类型论中,多态(英语:polymorphism)指为不同数据类型的实体提供统一的接口。 多态类型(英语:polymorphic type)可以将自身所支持的操作套用到其它类型的值上。

  • 中文名称 多态
  • 外文名称 Polymorphism
  • 类型 概念
  • 解释 多种状态

简介

  在编程语言和类型论中,多态(英语:polymorphism)指为不同数据类型的实体提供统一的接口。多态类型(英语:polymorphic type)可以将自身所支持的操作套用到其它类型的值上。

  计算机程序运行时,相同的消息可能会送给多个不同的类别未除培快信之对象,而系统可依据对象所属类别,引发对应类别的方法,而有不同的行为。简单来说,所谓多态意指相同的消息给予不同的对象会引发不同的动作。

  多态也可定义为"一种将不同的特殊行为和单个泛化记号相关联的能力"。

  多态可分为变量多态与函数多态。变量多态是指:基类型的变量(对于C++是引用或指针)可以被赋标设征值基类型对象,也可以被赋值派生类型的对象。函数多态是指,相同的函数调用界面(函数名与实来自参表),传送给一个360百科对象变量,可以有不同的行为,这视该对象变量所指向的对象类型而定。因此,变量多态是函数多态的基础。

  多态还可分为:

  动态多态及考(dynamic polymorphism):通过类继承机制检考和虚函数机制生效于运行期。可以优雅地处理异质对象集合,只要其共同的基类定义了虚函数的接口。也被称为子类型多态(Subtype polymorphism)或包含多态(inclusion polymorphism)。在面向对象程序设计中,这被直接称为多态

  静态多态(static polymorphism)翻移定烧用斗宗:模板也允许将不同的特殊行为和单个泛化记号相关联,由于这种关联处理于编译期而非运行期,因此被称为"静态"。可以用来实现类型安全、运行高效的同质对象集合操作。C++味坚用向迫汽输溶预秋拉STL不采用动态多态来实现就是个例子。

  函数重载(Function Overloading)

  运算符重载(Operator Ove简介否尽的斯rloading)

  带变量的宏多态(macro polymorphism)

  非参数化多态或译作特设多态(Ad-hoc polymorphism):

  参数化多态(Parametric polymorphism):把类型作为参数的多态。在面向对象程序设计中,这被称泛型编程

  对于C++语言配随模地,带变量的宏和函数重载(标穿学调许保称顶蒸function ove房跟照者唱举rload)机制也允许将不同的特殊行为和丝降资告致把绿古单个泛化记号相关联。然而,习惯上并不将这种函数多态(function polymorphism)、宏多态(育含件提革围首致macro polymorphism)展现出买液练具层入简拿来的行为称为多态(或静态多态),否则就连C语言也具有宏多态了。谈及浓夜判千自材神两讨职多态时,默认就是指段台施病扬友列吃动态多态,而静态多态则是指基于模板的多态。

发展历史

  1967 年,英国计算机科学家克里斯托弗·斯特雷奇在他的讲义合集《编程语言中的基础概念》中,首次提出了特设多态和参数多态的概念。

  1985 年,彼得·瓦格纳和卢卡·卡代利在论文中引入了术语"蕴含多态"(英语:inclusion polymorphism)来为子类型止得王新害曲二经和继承 (计算机科学)建模。。不过子类型和继承本身在 1967 年就已经在Simula有对应的实现。

例子

  比如有动物(Animal)之类别(Class),而且由动物继承出类别鸡(Ch来自icken)和类别狗(Dog),并对同一源自类别动物(父类)之一消息有不同的响应,如类别动物有"叫()"之动作,而类360百科别鸡会"啼叫()",类别狗则会"吠叫()",则称之为多态。

参见

  • 子类型
  • 鸭子类型
声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:fendou3451@163.com
标签:

  • 关注微信
上一篇:自由拼图4
下一篇:抗体酶

相关文章