A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

今天看TreeSet时,看到要实现Comparator接口,但是API中写着equals方法可以不重写,这是为什么呢?

12 个回复

倒序浏览
不重写,应该就是用Object类的equlse方法了吧。。。。compare方法你也可以不重写啊,但是就没有自己特有的比较性了。。。。。我的理解
回复 使用道具 举报
实现了Comparator,就已经有了判断是否相等的功能了,所以不需要再重写equals方法
回复 使用道具 举报
挥斥方遒 发表于 2015-6-11 16:02
不重写,应该就是用Object类的equlse方法了吧。。。。compare方法你也可以不重写啊,但是就没有自己特有的 ...

我感觉重点是,既然要实现这个接口,为什么可以不实现里面的方法呢?
回复 使用道具 举报
开弓没有回头箭 发表于 2015-6-11 16:06
实现了Comparator,就已经有了判断是否相等的功能了,所以不需要再重写equals方法 ...

问题在:实现接口的时候,没有实现里面的equals方法,尽然也可以?
回复 使用道具 举报
少年闰土 发表于 2015-6-11 18:24
问题在:实现接口的时候,没有实现里面的equals方法,尽然也可以?

equals是Object定义的方法,所有的类都实现它。
所以所以在实现接口时,该方法已被实现了,所以说不写也可以
回复 使用道具 举报
因为Object是任何类的根类!只要是个类 都直接或间接的继承了它!
回复 使用道具 举报
林RM 中级黑马 2015-6-11 20:52:19
8#
少年闰土 发表于 2015-6-11 18:20
我感觉重点是,既然要实现这个接口,为什么可以不实现里面的方法呢?

因为Object是所有类的父类,包括你定义的那个实现Object本身就有这个方法了
回复 使用道具 举报
开弓没有回头箭 发表于 2015-6-11 18:44
equals是Object定义的方法,所有的类都实现它。
所以所以在实现接口时,该方法已被实现了,所以说不写也 ...

恩明白了,自定义类继承自Object类,而Object类中已经实现了equals方法,所以就相当于自定义类中实现了这个方法,所以不用再写了;但是Comparator接口中还写这个方法有什么作用呢?这个还得思考啊,谢谢了
回复 使用道具 举报
少年闰土 发表于 2015-6-11 20:52
恩明白了,自定义类继承自Object类,而Object类中已经实现了equals方法,所以就相当于自定义类中实现了这 ...

就是为了进来进数据 好能排序吧...
回复 使用道具 举报
少年闰土 发表于 2015-6-11 18:24
问题在:实现接口的时候,没有实现里面的equals方法,尽然也可以?

只要你创建类他的基类就是Object,,会自动继承Object中的所有方法,包括equals(), 你实现了Comparator,类中里面就算是空的,他已经算是重写了Comparator接口的equals,所以你只需再重写compare
回复 使用道具 举报
加油!加油!加油!加油!
回复 使用道具 举报
只有抽象方法是需要非抽象的子类必须要实现的,其他方法,如果父类有,子类没有实现,也是可以的,可以借用父类的方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马