亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

小白求教:給的值不同,但最后顯示相同,為什么。。

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下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號