怎么比較兩個不同子類的值是否相等?
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