更新時間:2020-07-23 15:30:43 來源:動力節點 瀏覽4971次
在Java中,子類可繼承父類中的方法,而不需要重新編寫相同的方法。但有時子類并不想原封不動地繼承父類的方法,而是想作一定的修改,這就需要采用方法的重寫(Override)。方法重寫又稱方法覆蓋。
public?class?Test?{????public?static?void?main(String[]?args)?{????????/**
????????*?結論:
????????*?靜態方法可以被繼承,但是不能被覆蓋,即不能重寫。
????????*?*/
????????Son.staticMethod();?//?運行結果: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();?//?運行結果:Father?staticMethod
????????/**
?????????*?結論:
?????????*?類執行了自己申明的靜態方法。
?????????*?該子類實際上只是將父類中的同名靜態方法進行了隱藏,而非重寫。
?????????*?*/
????????Son.staticMethod();?//?運行結果:Son?staticMethod
????????Father?father?=?new?Son();????????/**
?????????*?結論:
?????????*?父類引用指向子類對象時,只會調用父類的靜態方法。
?????????*?父類和子類中含有的其實是兩個沒有關系的方法,它們的行為也并不具有多態性。
?????????*?*/
????????father.staticMethod();?//?運行結果: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");
????}
}
總結:
在Java中靜態方法可以被繼承,但是不能被覆蓋,即不能重寫。
如果子類中也含有一個返回類型、方法名、參數列表均與之相同的靜態方法,那么該子類實際上只是將父類中的該同名方法進行了隱藏,而非重寫。
父類引用指向子類對象時,只會調用父類的靜態方法。所以,它們的行為也并不具有多態性。
以上就是動力節點java培訓機構的小編針對“Java中靜態方法能否被重寫”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習