Java中为什么有些接口会定义equals()?既然所有的类都会从object继承这个方法。难道这

Java中为什么有些接口会定义equals()?既然所有的类都会从object继承这个方法。难道这是为以后不是继承object的类做准备么?

不是的~

这是重写啊,override,指的是你想改变超类中这个方法的行为;

Object类中的equals方法默认是比较对象地址的,但有些情况下你希望定义自己的比较方法,可能是基于值做比较的;比如类User有两个属性,name和age,你可能希望两个User对象的name和age相同时就是相等的,这时候就要重新写自己的equals()方法,如果使用Object的equals()方法就不行了~
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-10-21
首先,在Java中所有的类都是直接或间接的继承Object类,就算你自己创建一个类,没有指向父类,jvm也会自动将这个类继承Object,如果extends了一个父类,这个父类也会往上自动继承或者间接继承Object类,所以Java中所有的类都可以使用Object中的方法,有些接口会重新定义equals是为了重写equals方法,以扩展或增强这个方法的功能,从而实现一些功能
第2个回答  2013-12-08
1楼正解,不同类需要比较的东西不同。默认是比较指针地址的。
第3个回答  2013-12-08
有些排序要重写equals