为什么要 覆写 equals( ) 方法?

package cover;

public class Person {
private String name ;
private int age ;
public Person ( String name , int age )
{
this.name = name ;
this.age = age ;

}
//覆写 父类(Object类)中的equals 方法
public boolean equals ( Object o)
{
boolean temp = true ;
Person p1 = this ; // 声明p1对象,此对象实际上就是当前调用equals 方法的对象
if ( o instanceof Person) // 判断Object类师傅是Person 的实例
{
// if it is the Person class's example ,则向下转型
Person p2 = (Person)o;
// 调用String 类中的equals 方法
if (!( p1.name.equals(p2.name)&& p1.age==p2.age))

{

temp = false ;

}
else
{
// 如果不是Person类的实例,则直接返回false
temp = false ;

}

}
return temp ;
}

}
下午看程序,上面有个注释: //覆写 父类(Object类)中的equals 方法
我不知道 为什么要覆写 equals ( ) 方法!

这个你需要理解Java里对象比较equals()方法的含义:
equals一般需要覆写,是因为Java并不知道应该根据什么来比较两个对象。

举个例子,比较两个人(person)的对象,可以只比较两人的姓名(在没有重名的限制下),也可以同时比较姓名、性别、年龄、身份证号、出生地,甚至基因组,但在某种意义下还是有可能不是一个人,比如 双胞胎兄弟,所以这种equals()比较只是在限定条件下的比较,因此根据你的需要自己提供此方法的实现,否则Java只是用Object的比较二者的内存地址。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-12
如果你想这个类的对象能比较的话,就要覆写equals方法,因为你只有覆写了这个方法,JVM才知道根据什么判定这两个对象是相同的
第2个回答  2012-04-26
能不能请教一下,复写的equal方法括号里的对象为什么是(object O)? 这里要比较的不是两个person类吗。谢谢谢谢!
第3个回答  2012-03-10
具体点