问答详情
源自:9-9 Java 中的 Object 类 Ⅱ

重写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.");

}

}

}


提问者:fenkapian 2016-03-19 06:37

个回答

  • 慕后端2198842
    2016-03-20 22:13:35

    你这只是比较了 两个引用的指向地址,当然是不同的

  • 风羽_0001
    2016-03-20 10:27:50

    你注意下视频中老师用的是父类Dog创建的两个对象比较,而你一个是父类创建对象,一个是子类创建的对象,这时,重写equals方法是无效(我也不知道为什么),返回的还是不同。而用无论你进不进行方法重写,if((che.color).equals(NSX.color))都可以达到你的目的,返回相同

  • 风羽_0001
    2016-03-19 09:05:10

    if(che.equals(NSX))要改成if((che.color).equals(NSX.color))。没改前,如果if((che.color).equals(NSX.color))是比较两个color的内存地址,方法重写后比较的是它们的值。而对color的方法重写与if(che.equals(NSX)无关,它们比较的还是che和NSX的内存地址。