【发布时间】:2011-12-13 00:32:20
【问题描述】:
我有一个包含 2 个实例变量的超类(比如 int a 和 int b)和
现在决定我需要在我的子类int c 中有一个实例变量。
我已经覆盖了超类的 equals 和 hashCode 方法来考虑 对象/值的平等。我还覆盖了超类 toString 以提供一个字符串 表示对象的状态(变量值)。
基于以上事实,我现在在我的子类中有一个实例变量 int c 我想知道我是否
- 需要重写子类中的 toString 方法,还是因为我在超类中有一个有效的可继承 toString 方法(已经被重写),可用于子类字符串表示?
- 需要重写子类中的equals方法。可以这样做吗 通过调用超类的equals方法并在调用后为我的子类实例变量添加比较代码,还是需要新的实现?我认为是后者?
- 我打算重写子类中的 hashCode 方法。同样,最好有一个新的实现而不是调用超类的 hashCode 方法?我本来打算 将子类 equals 方法中的 a、b 和 c 与另一个对象进行比较,并在子类 hashCode 方法中为 a b 和 c 创建哈希码?这是要走的路还是需要我只考虑子类 equals 和 hashcode 方法中的变量 c?
我查看了各种资源,包括 bloch 撰写的 Effective Java(第 3 章),但找不到上述问题的答案
【问题讨论】: