更新時(shí)間:2020-07-23 15:30:43 來源:動(dòng)力節(jié)點(diǎn) 瀏覽5062次
在Java中,子類可繼承父類中的方法,而不需要重新編寫相同的方法。但有時(shí)子類并不想原封不動(dòng)地繼承父類的方法,而是想作一定的修改,這就需要采用方法的重寫(Override)。方法重寫又稱方法覆蓋。
public?class?Test?{????public?static?void?main(String[]?args)?{????????/**
????????*?結(jié)論:
????????*?靜態(tài)方法可以被繼承,但是不能被覆蓋,即不能重寫。
????????*?*/
????????Son.staticMethod();?//?運(yùn)行結(jié)果:Father?staticMethod
????}
}class?Father?{????public?static?void?staticMethod()?{
????????System.out.println("Father?staticMethod");
????}
}class?Son?extends?Father?{
}
public?class?Test?{????public?static?void?main(String[]?args)?{
????????Father.staticMethod();?//?運(yùn)行結(jié)果:Father?staticMethod
????????/**
?????????*?結(jié)論:
?????????*?類執(zhí)行了自己申明的靜態(tài)方法。
?????????*?該子類實(shí)際上只是將父類中的同名靜態(tài)方法進(jìn)行了隱藏,而非重寫。
?????????*?*/
????????Son.staticMethod();?//?運(yùn)行結(jié)果:Son?staticMethod
????????Father?father?=?new?Son();????????/**
?????????*?結(jié)論:
?????????*?父類引用指向子類對(duì)象時(shí),只會(huì)調(diào)用父類的靜態(tài)方法。
?????????*?父類和子類中含有的其實(shí)是兩個(gè)沒有關(guān)系的方法,它們的行為也并不具有多態(tài)性。
?????????*?*/
????????father.staticMethod();?//?運(yùn)行結(jié)果:Father?staticMethod
????}
}class?Father?{????public?static?void?staticMethod()?{
????????System.out.println("Father?staticMethod");
????}
}class?Son?extends?Father?{????public?static?void?staticMethod()?{
????????System.out.println("Son?staticMethod");
????}
}
總結(jié):
在Java中靜態(tài)方法可以被繼承,但是不能被覆蓋,即不能重寫。
如果子類中也含有一個(gè)返回類型、方法名、參數(shù)列表均與之相同的靜態(tài)方法,那么該子類實(shí)際上只是將父類中的該同名方法進(jìn)行了隱藏,而非重寫。
父類引用指向子類對(duì)象時(shí),只會(huì)調(diào)用父類的靜態(tài)方法。所以,它們的行為也并不具有多態(tài)性。
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java中靜態(tài)方法能否被重寫”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問,請(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)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)