更新時(shí)間:2020-07-29 14:39:19 來源:動力節(jié)點(diǎn) 瀏覽2199次
Override不是關(guān)鍵字,但是可以把它當(dāng)做關(guān)鍵字來使用。當(dāng)你想要覆寫某個(gè)方法時(shí),可以添加這個(gè)注解。在不小心重載而非覆寫了該方法時(shí),編譯器就會生成一條錯(cuò)誤信息。
簡單的說 Override有如下好處:
(1)可以當(dāng)注釋用,方便閱讀;
(2)編譯器可以給你驗(yàn)證 Override下面的方法是否是你父類中所有的,如果不是則報(bào)錯(cuò)。例如,你想重寫父類中的某個(gè)方法,如果沒寫 Override,而你下面的方法又寫錯(cuò)了,比如參數(shù)類型個(gè)數(shù)或者方法名不同,這時(shí)你的編譯器是可以編譯通過的,因?yàn)榫幾g器以為這個(gè)方法是你的子類中自己增加的方法。
拓展:Bruce的一個(gè)思考
《Thinking in java》的作者Bruce在討論這個(gè)問題的時(shí)候,提到了一個(gè)問題就是override私有的方法的例子:
現(xiàn)在我們向Fruit類中添加一個(gè)私有方法,而在Apple中嘗試復(fù)寫
@Override
private?void?grow(){
}
結(jié)果編譯器會提示錯(cuò)誤,這是一個(gè)非常低級的錯(cuò)誤,但是有時(shí)候恰恰就不會被我們發(fā)現(xiàn):那就是試著復(fù)寫私有方法,但是當(dāng)我們?nèi)サ鬙verride標(biāo)簽的時(shí)候,編譯器是不會報(bào)錯(cuò)的,而且可以執(zhí)行。
其實(shí)Apple中的你所謂復(fù)寫的grow只是一個(gè)針對于Apple本身的私有方法。完全是一個(gè)新的方法。
這就引出了一個(gè)問題,何為復(fù)寫?
在面向?qū)ο笾校挥薪涌诤凸灿蟹椒ǎ^承方法才有復(fù)寫,私有方法不可以復(fù)寫,其實(shí)根本就不存在復(fù)寫私有方法的概念!
以上就是動力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對“Javase基礎(chǔ)入門視頻教程之Override詳解”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743