亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

怎么比較兩個不同子類的值是否相等?

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不同子類時,不能比較屬性值,怎么修改才能比較不同子類的屬性值

謝謝


正在回答

11 回答

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();
????}
}


0 回復 有任何疑惑可以回復我~
#1

qq_文_17

回復了~
2016-04-08 回復 有任何疑惑可以回復我~
首頁上一頁12下一頁尾頁

舉報

0/150
提交
取消

怎么比較兩個不同子類的值是否相等?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號