课程
/后端开发
/Java
/Java入门第二季 升级版
大神们,劳烦你们看看,我只是多建了一个子类而已,到底要怎么搞才能不相同。请看看第三张图我改变的数值。
2016-08-28
源自:Java入门第二季 升级版 9-9
正在回答
这样给你解释吧!
默认情况下,也就是你不重写equals方法的情况,equals比较的是应用是否指向同一块内存地址
hashCode重写情况下(就是你的代码),比较的是两个对象的值是否相同
而你的代码中,创建了三个iphone对象分别是 i ,i1,huawei所以控制台输出肯定是相同啦!
采纳我采纳我~~~
不懂继续问
苍月坠梦3560349 提问者
苍月坠梦3560349 提问者 回复 JustWannaHugU
你的huawei类是继承phone中的属性,华为类iphone的子类,值当然肯定相同了,我想如果你把iphone huawei=new iphone();改成 huawei huawei=new huawei(); 应该就是不同了,不过类名 最好不相同,huawei huawei1 =new huawei();
应该分别创建iphone和huawei的对象,像你这样调用的对象都是iphone的属性
你三个都是创建的iphone这个类的对象,Huawei和Telphone的对象没有创建
我想的是你都是通过iPhone来创建的对象,所以比较的结果都是相同的,因为他们的内存地址是一样的,可以换个类的 对象比较一下,说错了勿喷。。。
奋斗小青年974 回复 苍月坠梦3560349 提问者
你重写equals方法了!所以控制台输出的是两个对象值相同!
解决了请采纳
JustWannaHugU 回复 苍月坠梦3560349 提问者
正常运行应该是可以的呀 我觉得没有什么问题,至于出来的结果huawei的 那部分判断不出来我也不清楚,坐等答案了
举报
课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙
2 回答为什么我这里两对象不同类型相同属性的值用equals()方法判断是相同的呢?
3 回答我重写了equals方法,dog1和dog2属性赋值也一样,怎么结果还是不相同呢?
2 回答为什么我在子类中修改父类的属性值,子类属性值也一同修改?
1 回答用重写equals()方法比较两个手机,属性都相同,运行结果怎么是不同的
2 回答我一直用的是IDEA,同样代码,为何看不到输出属性的地址和属性值