gpt4 book ai didi

oop - 在 OOP 中,运算符重载实际上是多态性还是参数重载?

转载 作者:行者123 更新时间:2023-12-04 12:43:08 25 4
gpt4 key购买 nike

运算符重载实际上是多态性还是参数重载?

多态性通常是指响应相同“消息”(方法名称)并做不同事情的不同类,所以

bird.give_sound()


car.give_sound()

可以做不同的事情。而参数重载更多的是在谈论同一个类,当随消息一起发送的参数(方法名称)不同时,做不同的事情。所以
bird.give_sound()


bird.give_sound(:frighten_sound)

可以不同。

那么运算符重载是严格的参数重载吗?像这样:
"foo" + "bar"
"foo" + 3

至少在 Ruby 中,它正在发送 +消息到包含 foo 的字符串,第一行是发送参数字符串,第二行是发送参数3, +做稍微不同的事情,但它是相同的接收器类 String
在下面的例子中,它是多态性:
"foo" + 3
1 + 3

因为 + message 调用不同类的不同方法,但使用相同的消息名称 + .那么在这两种情况下,它们是多态性,而不是运算符重载?

以上是否准确、正确?上面是否有可能添加或更正的内容?

最佳答案

感谢您在评论中澄清上下文。是的,我会说你是对的。

尽可能简短地总结...

给定相同的方法名称(或“消息”):

  • 基于参数类型的不同行为是重载,
  • 基于对象类型的不同行为是多态性。
  • 关于oop - 在 OOP 中,运算符重载实际上是多态性还是参数重载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5459381/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com