更新時間:2020-07-30 16:06:21 來源:動力節點 瀏覽2231次
在Java中,只有非private方法才可以被覆蓋;但是還需要密切注意覆蓋private方法的現象,雖然編譯器不會報錯,但是也不會按照我們所期望的來執行。確切地說,在導出類中,對于基類中的private方法,最好采用不同的名字。
示例
public?class?PrivateOverride{
????private?void?f(){print("private?f()";}
????public?static?void?main(String[]?args){
????????PrivateOverride?po=new?Derived();
????????po.f();
????}
}
class?Derived?extends?PrivateOverride{
????public?void?f(){print("public?f()";}
}
/*?output:
private?f()
*/
我們所期望的輸出是public f(),但是由于private方法被自動認為是final方法,而且對導出類是屏蔽的。因此,在這種情況下,Dervied類中的f()方法就是一個全新的方法,沒有重載基類中的f()方法。
以上就是動力節點java培訓機構的小編針對“Java編程基礎覆蓋,私有方法無法覆蓋”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習