我遇到了一个问题,我感到很困惑。 像这样的事情:
class animal and
class cat extends animal
现在假设我已经重写了动物和猫中的 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 a
和 Cat c
都是 Cat
。此外,它们都引用完全相同的对象。
关于java - Java中遇到多态时如何处理equals,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35612870/