java为什么要重写equals ?!

我理解了equals 和 == 的区别,但是,我想知道 object 类中已经有equals()了,为什么还要自己重写equals (),是不是 object 类中equals() 有什么缺陷呢?

求高手赐教,草鸟拜谢了!

默认equals在比较两个对象时,是看他们是否指向同一个地址的。
但有时,我们希望两个对象只要是某些属性相同就认为他们的quals为true。比如:
Student s1 = new Student(1,"name1");
Student s2 = new Student(1,"name1");
如果不重写equals的话,他们是不相同的,所以我们要重些equals,判断只要他们的id和名字相同equals就为true,在一些集合里有时也这样用,集合里的contain也是用equals来比较
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-05
重写并不是说object类里面的equals方法有缺陷,而是为了不同场景的需要。不同对象相同的方法不一样。
比如说对象是人,它有2个属性,name和height。有AB两个人,我们怎么来判断这两个人是同一个人还是不同的人,这里就要用到比较 , A.equals(B);
这里的equals就需要重新object类里的方法,来告诉程序,怎么判断2个人是同一个人
1。名字相同他们就是同一个人
2。name 和height 相同才是一个人
所以需要重新,例子简单不晓得你看明白没。追问

O(∩_∩)O谢谢

第2个回答  2011-10-05
子类继承父类 除了可以访问父类方法和属性外 ,还可以通过重写父类方法来获得子类方法的某些特征,这样可以在重写方法体里定义某些与父类不同的特征
有很多方法java都为我们提供的了 所以遇到想不出得方法时尽量查查JDK 重写一下就可以了 ,实在想不出才自定义
当初我也老不明白为什么老重写重写的 看视频老是重写
现在知道了 因为继承是面向对象的一大特征,所以很多时候都要重写 所以熟悉了JDK对你编程有很大好处哦追问

O(∩_∩)O谢谢