为了账号安全,请及时绑定邮箱和手机立即绑定

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

}

}

}


正在回答

3 回答

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

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

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

fenkapian 提问者

但是我看慕课老师视频里的例子,equals方法里就没有比较属性值啊,直接比较对象,然后程序就比较对象的属性值
2016-03-19 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

重写equals方法后执行结果不对

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信