重寫(xiě)equals方法后執(zhí)行結(jié)果不對(duì)
che和NSX的color,我都賦值為白色啊,結(jié)果應(yīng)該為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
你這只是比較了 兩個(gè)引用的指向地址,當(dāng)然是不同的
2016-03-20
你注意下視頻中老師用的是父類(lèi)Dog創(chuàng)建的兩個(gè)對(duì)象比較,而你一個(gè)是父類(lèi)創(chuàng)建對(duì)象,一個(gè)是子類(lèi)創(chuàng)建的對(duì)象,這時(shí),重寫(xiě)equals方法是無(wú)效(我也不知道為什么),返回的還是不同。而用無(wú)論你進(jìn)不進(jìn)行方法重寫(xiě),if((che.color).equals(NSX.color))都可以達(dá)到你的目的,返回相同
2016-03-19
if(che.equals(NSX))要改成if((che.color).equals(NSX.color))。沒(méi)改前,如果if((che.color).equals(NSX.color))是比較兩個(gè)color的內(nèi)存地址,方法重寫(xiě)后比較的是它們的值。而對(duì)color的方法重寫(xiě)與if(che.equals(NSX)無(wú)關(guān),它們比較的還是che和NSX的內(nèi)存地址。