要判断两个对象各个属性域的值是否相同,则不能使用从Object类继承来的equals方法,而需要在类声明中对equals方法进行重写
String类中已经重写了Object类的equals方法,可以判别两个字符串是否内容相同。
public boolean equals(Object obj) {
if (obj instanceof Apple) {
Apple a = (Apple) obj;
return (color.equals(a.getColor()) && (ripe == a.getRipe()));
}
return false;
}
}
public class AppleTester {
public static void main(String args[]) {
Apple a = new Apple("red", true);
Apple b = new Apple("red", true);
System.out.println(a + " is equal to " + b + ": " + a.equals(b));
System.out.println("a is identical to b: " + (a == b));
Apple c = a;
System.out.println(a + " is equal to " + c + ": " + a.equals(c));
System.out.println("a is identical to c: " + (a == c));
}
}
运行结果
A ripe red apple is equal to A ripe red apple: true
a is identical to b: false
A ripe red apple is equal to A ripe red apple: true
a is identical to c: true