没办法理解这段代码啊,麻烦老师再讲解下,谢谢了

没办法理解这段代码啊,麻烦老师再讲解下,谢谢了

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;
				
	}
	
	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;


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

此时我们是要重写继承自父类Object的equals方法,

如果不重写,那么它比较的是传进来的参数和调用它的对象是否是同一个内存地址下的对象,和==的用法是一样的,但是往往我们想要比较两个对象的值是否相等,可是,一个类里有很多属性,比如年龄,姓名,所以我们要重写equals方法,我们把传进来参数的属性和调用equals方法对象的属性进行一一比较,比较姓名是否相等呀,比较年龄是否相等。只要所有属性都相等,那么就返回true。下边的方法相同,只是限制了传入参数的时候,只能传入指定的类型Animal类型的参数。如果你传入的是Animal类型的参数,直接选择底下的方法执行,如果你传入的是其他类型的参数,会执行第一个方法比较,只不过比较前,把它强转成了Animal类。然后开始逐个属性的比较。最后返回判断结果。

  • 杉泽_ 提问者 #1
    Animal temp=(Animal)obj;为什么要写这句?这句的作用麻烦讲解下
    2018-04-15 18:50:43
  • 杉泽_ 提问者 #2
    Animal temp=(Animal)obj;为什么要写这句?这句的作用麻烦讲解下
    2018-04-15 18:50:44
  • 杉泽_ 提问者 #3
    this.getMonth()==temp.getMonth ==不是也判断位置的吗,你为什么重写的方法里判断2个值是否一样却用==
    2018-04-15 19:10:20
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师