多态性、参数多态性、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 的实践经验,所以我可能是错的。也许其他人可以启发我们。