更新時(shí)間:2020-07-30 15:57:46 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2259次
大家猜猜這個(gè)會(huì)輸出什么呢?靜態(tài)內(nèi)部類繼承Base類,屬性和父類的一樣,重寫了父類的一個(gè)方法,然后在main函數(shù)里面調(diào)子類的構(gòu)造函數(shù),其實(shí)仔細(xì)思考一下大概就知道輸出的是什么了~
輸出的答案是null
這題的流程是在初始化Sub對(duì)象前,首先JAVA虛擬機(jī)就在堆區(qū)開辟內(nèi)存并將子類Sub中的baseName和父類Base中的baseName均賦為null。Base b=new Sub()的時(shí)候,會(huì)先調(diào)用父類的無(wú)參構(gòu)造函數(shù),因?yàn)樽宇惡透割悓傩悦粯拥脑挘瑫?huì)將父類的屬性隱藏。調(diào)用了父類的構(gòu)造函數(shù),父類的構(gòu)造函數(shù)中調(diào)用了callName方法,此時(shí)父類中的baseName的值為base,可是子類重寫了callName方法,且調(diào)用父類Base中的callName是在子類Sub中調(diào)用的,因此當(dāng)前的this指向的是子類,也就是說(shuō)是實(shí)現(xiàn)子類的callName方法。可見,在baseName=“sub”執(zhí)行前(子類賦值語(yǔ)句),子類的callName()已經(jīng)執(zhí)行,所以子類的baseName為默認(rèn)值狀態(tài)null。
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“攜程java筆試題,據(jù)說(shuō)這道題沒(méi)幾個(gè)人做對(duì)”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743