多态性、参数多态性、Ad Hoc 多态性

标签 polymorphism adhoc

我试图找出这些类型的多态性之间的区别。我找不到太多关于 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/

相关文章:

ruby-on-rails - 使用accepts_nested_attributes_for和多态时,无法批量分配 protected 属性

Java多态练习

iphone - 无法分发 AdHoc ipa 文件

用于 Ad Hoc 分发的 XCode 4 的 iPhone 权利问题

iphone - 您的 iPhone Beta 应用程序是否使用不同的应用程序 ID?

c++ - 为什么对多态类的引用是多态的?

Java 类转换规则

java - 安卓多态: Anti-Pattern?

iphone - 在 ad-hoc 模式下应用程序崩溃抛出测试飞行 - 工作得很好

linux - 如何使用 Ansible ad-hoc 显示进程列表?