fenkapian
2016-03-19 06:37
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.");
}
}
}
你这只是比较了 两个引用的指向地址,当然是不同的
你注意下视频中老师用的是父类Dog创建的两个对象比较,而你一个是父类创建对象,一个是子类创建的对象,这时,重写equals方法是无效(我也不知道为什么),返回的还是不同。而用无论你进不进行方法重写,if((che.color).equals(NSX.color))都可以达到你的目的,返回相同
if(che.equals(NSX))要改成if((che.color).equals(NSX.color))。没改前,如果if((che.color).equals(NSX.color))是比较两个color的内存地址,方法重写后比较的是它们的值。而对color的方法重写与if(che.equals(NSX)无关,它们比较的还是che和NSX的内存地址。
Java入门第二季 升级版
530560 学习 · 6091 问题
相似问题