equals方法重载
public boolean equals(Animal obj) {
if(obj==null)
return false;
if(this.getName().equals(obj.getName()) && (this.getMonth()==obj.getMonth()))
return true;
else
return false;
}
老师,上面equals方法是对课程里前面的:
public boolean equals(Object obj) {
if(obj==null)
return false;
Animal temp=(Animal)obj;
if(this.getName().equals(temp.getName()) && (this.getMonth()==temp.getMonth()))
return true;
else
return false;
}
这个方法的重载,方法名相同、参数列表不同,符合方法重载的定义。
那么,老师,1、既然Object类是所有类的父类,能不能省略去public boolean equals(Object obj)这个方法重写的方法,直接去重载父类的equals方法,一步到位呢?
2、如果传参时,传的不是Animal类的对象,而是别的类的对象,老师,程序运行会不会报错?
3、为什么传参,传的对象非的是同一个类的对象,要么都是Object类,要么都必须是Animal类的对象,才能去做比较?
正在回答
同学你好,==比较的是内存地址是否相同。
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
你好!下面分别回答你在回复中的几个问题:
1、this.getMonth()==obj.getMonth()中的==不换成equals(),getMonth()获取的值是数值类型,用==进行比较。getName()获取的是字符串,所以需要用equals()进行比较
2、关于重载,其实是子类继承了父类的方法,然后对子类从父类继承来的方法进行重载,所以还是在同一个类中。
3、如果不是同类对象,比较也是没有意义的,比如我们用Cat类的对象和Dog类的对象进行比较。关于报错问题,这里是类的定义,不报错,也就是没有编译错误,但是运行时会报错。如果调用时传递的是不同的对象,比如本来应该传递Cat对象,但却传递了Dog对象,而Dog对象没有getMonth()方法,那么运行时就会报错。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星