@Override 的作用是:
創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)服務(wù)商,為中小企業(yè)提供網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作服務(wù),網(wǎng)站設(shè)計(jì),網(wǎng)站托管、服務(wù)器托管等一站式綜合服務(wù)型公司,專業(yè)打造企業(yè)形象網(wǎng)站,讓您在眾多競爭對(duì)手中脫穎而出創(chuàng)新互聯(lián)公司。如果bai想重寫父類的方du法,比如toString()方法的話,在zhi方法前面加上@Override 系統(tǒng)可以dao幫你檢查方法的正確性。
Override的用法:
Override:java.lang.Override是一個(gè)marker annotation類型,它被用作標(biāo)注方法。它說明了被標(biāo)注的方法重載了父類的方法,起到了斷言的作用。
舉例說明:
比如現(xiàn)在我們有一個(gè)基類:
現(xiàn)在我們編寫一個(gè)Apple子類,繼承這個(gè)基類,并且復(fù)寫基類中的show_name()方法。
執(zhí)行的結(jié)果就是會(huì)打印出Apple:2字樣。
其實(shí),在我們手工復(fù)寫父類的方法時(shí),容易把方法的參數(shù)記錯(cuò),如果此時(shí)不加@Override的話,編輯器就不會(huì)提示你:例如我們不加這個(gè)標(biāo)簽,悄悄的把參數(shù)改為float型。
這個(gè)時(shí)候,其實(shí)我們并沒有按照我們的意圖成功復(fù)寫方法,于是一個(gè)隱藏的bug就這樣誕生了,相反加上Override的效果就是
IDE給出了錯(cuò)誤提示,說明我們復(fù)寫方法失敗。
往往就是我們準(zhǔn)備復(fù)寫方法的時(shí)候結(jié)果,相反我們是重載了方法。
再比如:現(xiàn)在我們向Fruit類中添加一個(gè)私有方法,而在Apple中嘗試復(fù)寫
@Override private void grow(){ }
結(jié)果編譯器會(huì)提示錯(cuò)誤,這是一個(gè)非常低級(jí)的錯(cuò)誤,但是有時(shí)候恰恰就不會(huì)被我們發(fā)現(xiàn):那就是試著復(fù)寫私有方法,但是當(dāng)我們?nèi)サ鬙verride標(biāo)簽的時(shí)候,編譯器是不會(huì)報(bào)錯(cuò)的,而且可以執(zhí)行。
其實(shí)Apple中的你所謂復(fù)寫的grow只是一個(gè)針對(duì)于Apple本身的私有方法。完全是一個(gè)新的方法。
這就引出了一個(gè)問題,何為復(fù)寫?
在面向?qū)ο笾?,只有接口和共有方法,繼承方法才有復(fù)寫,私有方法不可以復(fù)寫,但是又想了一下,才明白:不是不可以復(fù)寫,而是根本就不存在復(fù)寫私有方法的概念!
這正是面向?qū)ο笤O(shè)計(jì)的初衷,私有方法本身就是為了封裝在類內(nèi)部,不希望別人來更改或者外部引用的。
以上就是java中的@Override有什么作用的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司其它相關(guān)文章!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。