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

我想要让属性值不相同怎么弄啊?

大神们,劳烦你们看看,我只是多建了一个子类而已,到底要怎么搞才能不相同。请看看第三张图我改变的数值。

57c302cb00017c7d05000351.jpg

57c302d90001c4b705000189.jpg

57c302e50001de5c05000152.jpg

57c302f500016d1f05000409.jpg

57c302f60001cccb05000302.jpg


正在回答

7 回答

这样给你解释吧!

默认情况下,也就是你不重写equals方法的情况,equals比较的是应用是否指向同一块内存地址

hashCode重写情况下(就是你的代码),比较的是两个对象的值是否相同

而你的代码中,创建了三个iphone对象分别是 i ,i1,huawei所以控制台输出肯定是相同啦!

采纳我采纳我~~~

不懂继续问

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

苍月坠梦3560349 提问者

表示还是不明白,我创建了三个对象,三对象只有华为的内存是63的,当比较属性的时候,理应华为是与苹果和手机的内存不一样(即iphone和Telphone的值)。假如我去掉一个子类,就能完全比较出来了,可为什么多了一个子类就比较出错,还真没搞明白呀!
2016-08-30 回复 有任何疑惑可以回复我~
#2

苍月坠梦3560349 提问者 回复 JustWannaHugU

谢谢,说真的,还是不明白,我蠢到爆了。
2016-08-31 回复 有任何疑惑可以回复我~

你的huawei类是继承phone中的属性,华为类iphone的子类,值当然肯定相同了,我想如果你把iphone huawei=new iphone();改成 huawei huawei=new huawei(); 应该就是不同了,不过类名 最好不相同,huawei  huawei1 =new huawei();

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

应该分别创建iphone和huawei的对象,像你这样调用的对象都是iphone的属性

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

你三个都是创建的iphone这个类的对象,Huawei和Telphone的对象没有创建


0 回复 有任何疑惑可以回复我~
我想的是你都是通过iPhone来创建的对象,所以比较的结果都是相同的,因为他们的内存地址是一样的,可以换个类的
对象比较一下,说错了勿喷。。。


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

苍月坠梦3560349 提问者

谢谢,说真的,还是不明白,我蠢到爆了。
2016-08-31 回复 有任何疑惑可以回复我~
#2

奋斗小青年974 回复 苍月坠梦3560349 提问者

这样说吧,这部分是关于继承的,子类继承了父类的属性信息,你在实例化对象的时候,也只是起了三个不同名的一样的东西。那么这三个变量指向的是同一个内存地址。默认打印出来是打印的是对象的内存地址。 虽然你更改了子类的属性信息,但是没有重写equals方法,所以比较的还是内存地址
2016-10-23 回复 有任何疑惑可以回复我~

你重写equals方法了!所以控制台输出的是两个对象值相同!

解决了请采纳

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

苍月坠梦3560349 提问者

表示还不懂,能详细点么?
2016-08-29 回复 有任何疑惑可以回复我~
#2

JustWannaHugU 回复 苍月坠梦3560349 提问者

白天在忙没看到,刚给你回复了,你再看看能理解不能
2016-08-29 回复 有任何疑惑可以回复我~

正常运行应该是可以的呀 我觉得没有什么问题,至于出来的结果huawei的 那部分判断不出来我也不清楚,坐等答案了

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

举报

0/150
提交
取消

我想要让属性值不相同怎么弄啊?

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