DOG类中:
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Dog other = (Dog) obj;
if (age != other.age)
return false;
return true;
}
调用的类:
package com.exe02;
public class Inital {
public static void main(String[] args){
Dog dog=new Dog();
dog.age=60;
Dog dog2=new Dog();
dog2.age=70;
if(dog.equals(dog2)){
System.out.println("两个对象相同");
}
else{
System.out.println("两个对象不同");
}
}
}
结果还是不同
两个对象属性不同,当然输出结果"两个对象不通"啊.
dog.age=60,
dog2.age=60.
这样结果才是相同.
为什么我的两个对象的属性值不同,运行结果还是相同。。。
当然不同啦
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Dog other = (Dog) obj;
if (age != other.age)
return false;
你重写的方法有这三种情况是返回 false ,第二种和第三种都满足了
结合上面那位童鞋的答案,两个对象属性相同,但,属性值不同,即age的值不想等