在阅读stackoverflow问题时,普遍的共识似乎是过载不是多态性的一部分。
但是,我的OOP讲义指出:
“有四种多态性:参数,包含,强制和重载”。
在注释中,它指的是使用具有不同参数的方法进行重载,还涉及对运算符进行重载,例如,在整数和浮点数意义上的+。
Wikipedia还指出“使用函数重载,许多语言都支持Ad hoc多态性。”
因此,我对为什么人们说这不是多态性的一部分感到困惑,正如我认为的那样。对于一种方法,我们有不同的形式。
有人能详细说明吗?
谢谢。
如果严格定义“多态性”一词的含义,那么可以,重载就是多态性。这些方法具有相同的名称,不同的签名,并且运行时根据您使用的签名知道要使用哪种方法。这是同一方法的多种形式。它不是具有类和继承,动物,狗和猫等的多态性的“经典”描述。某些语言具有运算符重载。是否有许多相同类型的形式?
这实际上取决于您说的是多态。如果您说许多形式仅与对象有关,那么是的,就OOP而言,您不能将其重载为“真实”多态性,因为它们是方法,而不是对象。
多态性vs覆盖vs重载可以提供帮助
您可以看到有很多意见。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句