怎么比較兩個不同子類的值是否相等?
package?com.imooc;
public?class?Animal?{
????public?String?name;
????public?int?age;
????@Override
????public?boolean?equals(Object?obj)?{
????????if?(this?==?obj)
????????????return?true;
????????if?(obj?==?null)
????????????return?false;
????????if?(getClass()?!=?obj.getClass())
????????????return?false;
????????Animal?other?=?(Animal)?obj;
????????if?(age?!=?other.age)
????????????return?false;
????????return?true;
????}
}package?com.imooc;
public?class?Dog?extends?Animal?{
}package?com.imooc;
public?class?Cat?extends?Animal?{
}package?com.imooc;
public?class?Initial?{
????public?static?void?main(String[]?args)?{
????????Dog?dog?=?new?Dog();
????????Dog?dog2=new?Dog();
????????Cat?cat?=?new?Cat();
????????dog.age=1;
????????dog2.age=1;
????????cat.age=1;
????????if(dog.equals(dog2)){
????????????System.out.println("dog和dog2的age相同");
????????}else{
????????????System.out.println("dog和dog2的age不同");
????????}
????????if(dog.equals(cat)){
????????????System.out.println("dog和cat的age相同");
????????}else{
????????????System.out.println("dog和cat的age不同");
????????}
????}
}結果為dog和dog2的age相同,dog和cat的age不同
為什么new同一個子類時,equals可以比較屬性值,而new不同子類時,不能比較屬性值,怎么修改才能比較不同子類的屬性值
謝謝
2016-04-08
package?com.imooc; public?class?Animal?{ ????public?String?name; ????public?int?age; }package?com.imooc; public?class?Dog?extends?Animal?{ ????String?name="狗"; ????int?age=1; }package?com.imooc; public?class?Cat?extends?Animal?{ ????String?name="狗"; ????int?age=2; }package?com.imooc; import?java.util.Scanner; public?class?Initial?{ ????public?static?void?main(String[]?args)?{ ????????Scanner?input=new?Scanner(System.in); ????????System.out.println("請輸入動物名"); ????????String?choose1=input.next(); ????????Animal[]?animal={new?Dog(),new?Cat()}; ????????for(int?i=0;i<animal.length;i++){ ????????????if(choose1==animal[i].name){ ????????????System.out.println("已找到"+choose1); ????????????}else?if(i==animal.length-1){ ????????????????System.out.println("未找到"+choose1); ????????????} ????????} ????????System.out.println("\n請輸入1或2"); ????????int?choose2=input.nextInt(); ????????for(int?n=0;n<animal.length;n++){ ????????????if(choose2==animal[n].age){ ????????????System.out.println("已找到"+choose2); ????????????}else?if(n==animal.length-1){ ????????????????System.out.println("未找到"+choose2); ????????????} ????????} ????????input.close(); ????} }