多态性、参数多态性、Ad Hoc 多态性
Polymorphism, Parametric Polymorphism, Ad Hoc Polymorphism
我试图找出这些类型的多态性之间的区别。我找不到太多关于 Ad-Hoc 多态性的 material。
我想说Polymorphism就是Parametric Polymorphism 但一般只是简称Polymorphism?我的假设是否正确?
我知道多态性可以用于继承,但我不确定它可以提供哪些其他属性。
如果有人可以帮助定义这些类型的多态性并尝试给出明显的差异,那就太好了。
谢谢!
注意:Python 中的每个例子都很好。
多态是一个笼统的概念。 Ad-hoc 多态性和参数多态性是该概念的特化。 (根据the relevant Wikipedia article,还存在其他类型的多态性。)
Ad-hoc 多态性也称为函数重载,它指的是使用类型系统来精确地解析将调用哪个方法。因此,我们可能有两个函数,都称为 fn
,其中一个接受 int
参数,而另一个接受 String
参数,并根据传递的参数类型。
参数多态基本上就是泛型的使用。因此,Collection<T>
接口可以说是多态的,因为它可以用作 Collection<Integer>
和 Collection<String>
等等。名称 "parametric" 指的是泛型参数的存在。
据我所知,python没有很强的类型概念,也不支持泛型,("templates"用C++的说法,)所以这些概念可能不适用于Python。但是,我没有 Python 的实践经验,所以我可能是错的。也许其他人可以启发我们。
我试图找出这些类型的多态性之间的区别。我找不到太多关于 Ad-Hoc 多态性的 material。
我想说Polymorphism就是Parametric Polymorphism 但一般只是简称Polymorphism?我的假设是否正确?
我知道多态性可以用于继承,但我不确定它可以提供哪些其他属性。
如果有人可以帮助定义这些类型的多态性并尝试给出明显的差异,那就太好了。
谢谢!
注意:Python 中的每个例子都很好。
多态是一个笼统的概念。 Ad-hoc 多态性和参数多态性是该概念的特化。 (根据the relevant Wikipedia article,还存在其他类型的多态性。)
Ad-hoc 多态性也称为函数重载,它指的是使用类型系统来精确地解析将调用哪个方法。因此,我们可能有两个函数,都称为 fn
,其中一个接受 int
参数,而另一个接受 String
参数,并根据传递的参数类型。
参数多态基本上就是泛型的使用。因此,Collection<T>
接口可以说是多态的,因为它可以用作 Collection<Integer>
和 Collection<String>
等等。名称 "parametric" 指的是泛型参数的存在。
据我所知,python没有很强的类型概念,也不支持泛型,("templates"用C++的说法,)所以这些概念可能不适用于Python。但是,我没有 Python 的实践经验,所以我可能是错的。也许其他人可以启发我们。