关于equals方法重写
原本的Cat类中的equals方法比较的仅仅是两个对象是否相等么?计较的是地址么?
重写equals方法中的this==obj是怎么实现判断对象是否相同的呢?obj是Object类,this难道不是Cat类么?
本案例重写equals方法的目的是不仅仅判断两个元素是否相等,还要判断对象内部属性是否相等。重写的方法中有必要进行第一步对象是否相同的判断么?不相同固然要进行下一步判断,但是如果相同的话其属性一定是一样的啊,因此去掉第一步判断应该不会对功能产生影响吧?如果不会对功能产生影响,那么写第一步判断是为了让计算机少进行运算么?
如果具体案例中已知集合原本元素与新加元素同属一类(Cat),是不是可以直接省略obj.getClass()==Cat.class这一步判断呢?obj.getClass()==Cat.class本身就是判断原本元素与新元素是不是同类的作用吧?
正在回答
1)、Cat类中equals方法比较的是对象是否相等,不是比较的地址。
2) this指代的是当前对象,obj指代的传入的对象,传入的对象也可以是Cat类型的,因为可以进行自动类型转化,所以可以传入Object的子类。
3)是的;如果相等就不需要再进行后面的代码了,因此可以提高运行效率;
4)重写equals方法不是只为一个案例使用的,如果有其他的代码也需要使用呢?因此还是不建议去掉的;obj.getClass()==Cat.class是用来判断是不是同类对象的。
建议你再学习一下这一小节。祝学习愉快~
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星