首页 . 理学 . 计算机科学技术 . 计算机软件 . 软件语言与方法 . 软件语言 . 领域特定语言

多态

/polymorphism/
条目作者李樾

李樾

最后更新 2024-12-04
浏览 261
最后更新 2024-12-04
浏览 261
0 意见反馈 条目引用

一种程序设计语言特性,指程序中的单一接口可呈现出多种类型的行为,或单个符号可表示多种类型。

英文名称
polymorphism
所属学科
计算机科学技术

多态主要分为三类:C.斯特雷奇(Christopher Strachey)于1967年引入的特设多态(ad hoc polymorphism)与参数多态(parametric polymorphism),以及Luca Cardelli与Peter Wegner于1985年引入的子类型多态(subtype polymorphism)。子类型多态又称包含多态(inclusion polymorphism)。

特设多态指一个多态函数具有多个不同实现,针对调用时传入的不同类型(甚至不同数量)的参数而调用相应版本的实现,进而呈现出不同行为。支持函数重载或运算符重载的语言(如C++、Ruby)可视为具有特设多态的特性。

参数多态指定义函数时,对于其部分(或全部)变量可不指定具体类型,而是使用类型参数表示其类型,定义出的多态函数可适用于各种具体类型。许多语言(如C++、Haskell)所支持的泛型编程就是一种参数多态特性。参数多态允许开发者定义出具备通用性的函数,可以以统一的方式处理数据而不用依赖其具体类型,提升了程序设计语言的表达力与代码复用的能力。

子类型多态指一个父类的多个子类覆写了其同一接口,因而这些子类的对象对于该接口的调用具有不同的响应行为。主流面向对象语言(如Java、C#)均支持子类型多态。

  • STROUSTRUP B.Bjarne Stroustrup's C++ Glossary.[S.l.]:[s.n.],2007.
  • CARDELLI L,WEGNER P.On understanding types, data abstraction, and polymorphism.ACM Computing Surveys,1985,17(4):471–523.

相关条目

阅读历史

    意见反馈

    提 交

    感谢您的反馈

    我们会尽快处理您的反馈!
    您可以进入个人中心的反馈栏目查看反馈详情。
    谢谢!