ad hoc polymorphism(特设多态):在编程语言中,通过为不同类型分别提供不同实现来实现“同名操作”的多态性。最常见的形式是函数/运算符重载(overloading),以及在某些语言中通过类型类(type classes)或类似机制实现的按类型选择实现。
(注:多态还有其他常见类型,如参数多态 parametric polymorphism、子类型多态 subtype polymorphism。)
/ˌæd ˈhɑːk ˌpɑːlɪˈmɔːrfɪzəm/
Ad hoc polymorphism lets the same function name work for different types.
特设多态让同一个函数名可以适用于不同的类型。
In many languages, operator overloading is a form of ad hoc polymorphism, because “+” may behave differently for integers and for strings.
在许多语言中,运算符重载是一种特设多态,因为“+”对整数和对字符串的行为可能不同。
ad hoc 源自拉丁语,意为“为此、专门针对某个目的”;polymorphism 来自希腊语词根 *poly-*(多)+ morph(形态)+ -ism(名词后缀),合起来就是“多种形态”。“ad hoc polymorphism”字面含义是“为特定情况而定制的多态”:同一个操作在不同类型下以不同“形态/实现”出现。