从 Object 类继承的哪些方法通常应该被重写?

问题描述 投票:0回答:1

我知道 equals()、hashCode() 和 toString() 是大多数类应该为该类重写的三个方法及其具体用法,但是我是否应该添加其他方法到我的类中,如果是的话为什么我要添加使用它们以及它们如何工作?

java inheritance methods overriding
1个回答
0
投票

Object
类继承的哪些方法应该通常被重写?

都没有!其中一些“可以”被覆盖,而且经常被覆盖。但它们中的任何一个都不应该理所当然地被覆盖。 以下是可以重写的方法:

  • toString()

    如果您希望它反映目标实例的状态,则可以覆盖

    
    

    如果您希望
  • equals(Object)
  • 语义基于实例的值而不是引用标识,则

    hashCode()
    equals 可能会被覆盖1
    
    

  • clone()

    如果默认实现的语义不是您所需要的,

    可能会被覆盖。
    如果您希望该类可完成,则

  • finalize()
  • may

     会被覆盖。 (但不要这样做。终结已被弃用,并将在未来的 Java 版本中删除。有关详细信息,请参阅 
    JEP 421。)

    其余的
  • Object
方法是

final

,因此它们不能被覆盖。

1 - 如果您重写这两种方法之一,您很可能需要重写另一个方法来维护通用的
hashCode

合约。有关详细信息,请参阅 javadocs

© www.soinside.com 2019 - 2024. All rights reserved.