Java面向对象编程:对象相等性、方法重写与代码复用策略
1. Java中的对象相等性
在Java编程中,对象相等性的判断至关重要。Java提供了 equals()
方法来支持逻辑相等性的判断,该方法位于 Object
类中。不过, equals()
方法默认比较的是对象的引用,若要比较对象的内容,就需要对其进行重写。
在重写 equals()
方法之前,需先确认是否有必要。例如, java.lang.StringBuffer
类就没有重写 equals()
方法,可能是其设计者认为无需判断两个 StringBuffer
对象是否逻辑相等。
重写 equals()
方法不能随意编写代码,必须遵循Java文档中规定的契约。该方法在非空对象引用上实现了等价关系,具体要求如下:
- 自反性 :对于任何非空引用值 x
, x.equals(x)
都返回 true
。
- 对称性 :对于任何非空引用值 x
和 y
,当且仅当 y.equals(x)
返回 true
时, x.equals(y)
才返回 true