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