码迷,mamicode.com
首页 > 其他好文 > 详细

多态(Polymorphism)

时间:2016-07-24 17:55:55      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:

C++里多态的概念有点乱,有时间上Wikipedia上搜索了下相关词条,总结如下:

 

Polymorphism(computer science)


在编程语言和类型理论中,Polymorphism(希腊语,意思为many shape)指的是单个接口对应多个类型实体。作为一个多态类型,它的操作(operation)也可以被提供给其他类型的value。存在几种完全不同类型的多态。

1.Ad hoc polymorphism:函数能够依据参数类型指定不同的实现(depending on a limited range of individually specified types and combinations.)。

其实就是函数重载(function overloading)

 

2.Parametric polymorphism:编码可以不指定任何特定类型,在被实例化作为参数时才去确定类型。在面向对象编程中,被称为generic programming,而在函数式编程中,则被简称为polymorphism。

在C++里就是模板(template)。

 

3.Subtyping:名字指定公用超类的不同子类的实例。在面向对象编程中,常被简称为polymorphism。

在C++中就是虚函数(virtual function)。

 

总结一下,所谓多态,就是指一个接口(interface)对应不同的类型实体。广义的多态,分为三种类型,分别是Ad hoc(同名函数,参数类型不同), Parametirc(运行时推导实际类型), Subtyping(子类从超类继承同名接口,实现不同的行为),分别对应C++中的function overloading, Template 和 virtual function。而C++中所谓的多态,对应的就是Subtyping,通过virtual function的方式来实现。

 

参考链接:

1. https://en.wikipedia.org/wiki/Polymorphism_(computer_science)

2. https://en.wikipedia.org/wiki/Ad_hoc_polymorphism

3. https://en.wikipedia.org/wiki/Parametric_polymorphism

4. https://en.wikipedia.org/wiki/Subtyping

多态(Polymorphism)

标签:

原文地址:http://www.cnblogs.com/gold-mountain/p/5701177.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!