第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

為什么會(huì)這樣輸出?

57ce94d10001809205000320.jpg

57ce94d80001d9e905000228.jpg

57ce94de00014db105000320.jpg

57ce94e50001326703920095.jpg

為什么輸出中dog.mothod( );和重寫toString( )方法的結(jié)果中age都為Animal類中的age的值10,而不是22,name都為dog.name="xiaoming",而不是“Cat”。

正在回答

4 回答

在Dogs里面聲明了age變量同時(shí)又繼承了父類里面的age變量,這時(shí)候主程序?qū)ge賦值實(shí)際上是dog.this.age=22;而super.age的初始值是Animal定義的=10;

你在mothod函數(shù)里面調(diào)用super.eat函數(shù)使用的是super.age,也就是為10. 同時(shí)對(duì)于從Animal繼承的toString函數(shù)里面調(diào)用的也是super.age,同樣結(jié)果為10.

而name由于在子類沒(méi)有被定義同名變量所以主函數(shù)賦值的xiaoming,從而在Animal里面賦值語(yǔ)句沒(méi)有被執(zhí)行,所以輸出的都是xiaoming。


-----------------上面說(shuō)的不太清楚,我從內(nèi)存的角度說(shuō)下吧-----------------

先實(shí)例Animal,內(nèi)存:地址1-》age ? 地址2-》name;eat函數(shù)和toString調(diào)用地址1和地址2的變量

再接著實(shí)例Dogs,內(nèi)存變成:地址1-》super.age ? 地址2-》name ? 地址3-》this.age;super.eat函數(shù)和toString調(diào)用地址1和地址2的變量;eat函數(shù)不調(diào)用變量;method函數(shù)調(diào)用super.eat函數(shù);

主函數(shù)的age賦值給地址3,name賦值給地址2,Animal的age賦值給了地址1,name本該賦值給地址2但是主函數(shù)賦值過(guò)所以不操作;

希望這樣表述你能明白

1 回復(fù) 有任何疑惑可以回復(fù)我~
#1

慕粉18883846529 提問(wèn)者

非常感謝!
2016-09-06 回復(fù) 有任何疑惑可以回復(fù)我~

age是全局變量,所以兩次賦值都改變了同一內(nèi)存中的值,而name是局部變量,兩次改變不是同一內(nèi)存地址的值,取第一次賦值的值

0 回復(fù) 有任何疑惑可以回復(fù)我~

把dog類的第四行注釋掉

0 回復(fù) 有任何疑惑可以回復(fù)我~

把第四行注釋掉試試?

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消
Java入門第二季 升級(jí)版
  • 參與學(xué)習(xí)       531100    人
  • 解答問(wèn)題       6280    個(gè)

課程升級(jí)!以終為始告別枯燥,在開發(fā)和重構(gòu)中體會(huì)Java面向?qū)ο缶幊痰膴W妙

進(jìn)入課程

為什么會(huì)這樣輸出?

我要回答 關(guān)注問(wèn)題
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)