重寫equals方法后執行結果不對
che和NSX的color,我都賦值為白色啊,結果應該為same啊。代碼如下:
package com.benz;
public class IntialinCar {
public static void main(String[] args) {
Car che = new Car();
che.color = "baise";
// che.engine = 4;
// che.speed = 100;
Honda NSX = new Honda();
NSX.color = "baise";
// NSX.engine = 4;
// NSX.speed = 100;
NSX.run();
//NSX.cheJiaHao(4);
Honda bentian = new Honda();
//bentian.cv();
System.out.println(bentian);
NSX.color = "baise";
bentian.color = "c";
if(che.equals(NSX)){
System.out.println("same");
}else{
System.out.println("no.");
}
}
}
2016-03-20
你這只是比較了 兩個引用的指向地址,當然是不同的
2016-03-20
你注意下視頻中老師用的是父類Dog創建的兩個對象比較,而你一個是父類創建對象,一個是子類創建的對象,這時,重寫equals方法是無效(我也不知道為什么),返回的還是不同。而用無論你進不進行方法重寫,if((che.color).equals(NSX.color))都可以達到你的目的,返回相同
2016-03-19
if(che.equals(NSX))要改成if((che.color).equals(NSX.color))。沒改前,如果if((che.color).equals(NSX.color))是比較兩個color的內存地址,方法重寫后比較的是它們的值。而對color的方法重寫與if(che.equals(NSX)無關,它們比較的還是che和NSX的內存地址。