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

小白求教:给的值不同,但最后显示相同,为什么。。

https://img1.sycdn.imooc.com//5ca9f0f40001857c07390536.jpg

https://img1.sycdn.imooc.com//5ca9f0f40001005905110330.jpg

https://img1.sycdn.imooc.com//5ca9f0f40001eb5707370544.jpg

b1 和b2的速度一个是15,一个是30,输出时显示也是不相等的,但用equals比较时怎么相等。。小白求教各位~



正在回答

7 回答

你对equals重载的时候是在子类重载的,而你用equals比较b1和b2对象是比较的父类Transport的对象,所以你的重载就像是对他没用,equals还是比较的是b1和b2的引用地址

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

慕粉1039238650

那么问题来了,为什么b1和b2的引用地址是相同的?
2020-03-05 回复 有任何疑惑可以回复我~

根据一楼,我觉得是不是应该改成:

Bicycle b1=new Bicycle();

Bicycle b2=new Bicycle();

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

慕粉1039238650

多态,不用改
2020-03-05 回复 有任何疑惑可以回复我~
#2

慕粉1039238650 回复 慕粉1039238650

不过改了以后可以解决这个问题
2020-03-05 回复 有任何疑惑可以回复我~

https://img1.sycdn.imooc.com//5cb1c1e300013bc003150041.jpg这种命名方法调用属性是调用父类属性,调用方法是调用子类方法

https://img1.sycdn.imooc.com//5cb1c241000151bb01460031.jpg所以这里就相当于给父类的属性赋值了,输出结果就是15和30


https://img1.sycdn.imooc.com//5cb1c83d0001db6c03840059.jpg然后这里是用的子类里的equals方法,使用的Bicycle里的speed属性的值,都是10,所以输出结果是"="


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

黑皮磊

怎么修改呢
2019-05-26 回复 有任何疑惑可以回复我~
#2

慕粉1039238650 回复 黑皮磊

可以在父类中重写equals方法,把子类中的equals方法删掉。 或者把第七行的int speed;去掉
2020-03-05 回复 有任何疑惑可以回复我~

你应该比较b1.speed和b2.speed的值吧 你那b1和b2都没有返回参数

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

慕粉1039238650

重写的equals方法里比较了
2020-03-05 回复 有任何疑惑可以回复我~

声明是父类  equals时用子类属性比较 被初始化了 

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

构造方法赋给speed值,构造方法又比属性初始化晚,所以两个对象的speed的值都为10

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

慕粉1039238650

后面还有b1.speed=15;b2.speed=30;
2020-03-05 回复 有任何疑惑可以回复我~

b1,b2不是值

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

举报

0/150
提交
取消

小白求教:给的值不同,但最后显示相同,为什么。。

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