Java中的重載和重寫

Java多態(tài)分為編譯期多態(tài)和運(yùn)行時(shí)多態(tài),編譯期多態(tài)是指重載,運(yùn)行時(shí)多態(tài)有三個(gè)條件:1、繼承? 2、重寫? 3、向上轉(zhuǎn)型,三個(gè)條件缺一不可。

重載:方法名相同,方法參數(shù)不同的方法。這樣做是因?yàn)橥粋€(gè)方法中無法完成多個(gè)只是類型不一樣但是操作一樣的動(dòng)作,那么我們可以通過重載來做。

Java中的方法的重載在編譯期就已經(jīng)產(chǎn)生了方法的描述符,在執(zhí)行的時(shí)候根據(jù)方法的描述符和傳入的參數(shù)選擇方法執(zhí)行,這樣的形式稱為編譯期的多態(tài)。

為什么Java的重載是以方法名和參數(shù)來作為方法的描述符的?

答:在方法執(zhí)行中,有時(shí)候只關(guān)心方法的執(zhí)行過程而不關(guān)心方法的返回值。所以我們用方法名和方法的參數(shù)做方法的描述符。描述符是在編譯期就已經(jīng)產(chǎn)生。

重寫:子類繼承父類的方法,并對(duì)父類方法的方法體進(jìn)行重新編寫。

重寫要遵循兩同兩小一大規(guī)則

兩同:方法名相同且形參列表相同

兩小:子類的返回值類型小于等于父類方法的返回值類型,子類方法拋出的異常小于等于父類方法拋出異常的類型

一大:子類方法的訪問權(quán)限修飾符大于等于父類方法的訪問權(quán)限修飾符

注意:1、子類能重寫的一定是子類從父類繼承的方法,如果父類的方法是private修飾,則子類繼承不了,也就不存在重寫了。

2、子類重寫的方法和父類重寫的方法要么都是類方法(static修飾),要么都是實(shí)例方法,不能一個(gè)是類方法,一個(gè)是實(shí)例方法,會(huì)編譯錯(cuò)誤。

3、當(dāng)子類的重寫了父類的方法后 ,子類的實(shí)例化對(duì)象將不能調(diào)用父類的方法,但是可以在子類方法中通過super調(diào)用父類的方法。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容