如果父类已重写了 hashCode()、子类的 rep 中没有引入新的属性且没有重写 equals(..),那么子类中无需重写 hashCode()
时间: 2024-05-18 19:17:18 浏览: 81
java中重写equals和重写hashCode()
如果父类已经重写了 hashCode() 方法,并且子类没有引入新的属性,那么子类中无需重写 hashCode() 方法。这是因为在子类中,hashCode() 方法会继承自父类的实现,这个实现已经满足了 hashCode() 方法的相关规范。
但是,如果子类中引入了新的属性并且这些属性会影响对象的相等性,那么子类就需要重写 hashCode() 方法,以便根据这些新属性计算哈希码。另外,如果子类中重写了 equals() 方法,那么子类也需要相应地重写 hashCode() 方法,以满足 hashCode() 方法的相关规范。这是因为 equals() 和 hashCode() 方法是紧密相关的,如果两个对象相等,它们的哈希码应该相同。
总之,当你在编写 Java 类时,需要根据类中的属性和逻辑来决定是否需要重写 hashCode() 方法,以便正确地实现对象的哈希码计算。
阅读全文