gpt4 book ai didi

java - Java中遇到多态时如何处理equals

转载 作者:行者123 更新时间:2023-11-30 08:40:31 24 4
gpt4 key购买 nike

我遇到了一个问题,我感到很困惑。像这样的事情:

class animal and 
class cat extends animal

现在假设我已经覆盖了 animal 和 cat 中的 equals 方法。

参见:

cat a = new cat("white","Tom")   //cat has specific property name    
cat b = new cat("black","Jim")
a.equals(b) //return false
animal c = (animal)a //animal has no name property

c.equals(a)a.equals(c) 都返回 true

这很奇怪,因为你不能说动物是猫。

而且我了解到 Java 中的强制转换不会更改对象的类。所以 c.getClass() 仍然返回 cat。但是有什么可以做的吗?将动物与猫进行比较时,我想要一个错误。

谢谢

最佳答案

Java 不比较引用变量类型;它正在比较它们引用的对象。在您的例子中,Animal aCat c 都是 Cat。此外,它们都引用了完全相同的对象

关于java - Java中遇到多态时如何处理equals,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35612870/

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