java中方法的重寫(overriding)與重載(overloading)的區(qū)別

   方法的重寫(Overriding)和重載(Overloading)是Java多態(tài)性的不同表現(xiàn)。二者多態(tài)的差別在于,重載的編譯時(shí)多態(tài),重寫是運(yùn)行時(shí)多態(tài)。重寫(Overriding)是父類與子類之間多態(tài)性的一種表現(xiàn),而重載(Overloading)是一個(gè)類中多態(tài)性的一種表現(xiàn)。   
    如果在子類中定義某方法與其父類有相同的名稱和參數(shù),我們說該方法被重寫 (Overriding)  。子類的對象使用這個(gè)方法時(shí),將調(diào)用子類中的定義,對它而言,父類中的定義如同被"屏蔽"了.  
   如果在一個(gè)類中定義了多個(gè)同名的方法,它們或有不同的參數(shù)個(gè)數(shù)或有不同的參數(shù)類型或有不同的參數(shù)次序,則稱為方法的重載(Overloading)。不能通過訪問權(quán)限、返回類型、拋出的異常進(jìn)行重載. 
  • Override 特點(diǎn) :
    1、 override的子類的方法名稱、參數(shù)類型必須要和父類方法的完全匹配,才能達(dá)到重寫的效果;
    2、 override的子類的方法的返回值類型必須和 父類方法的一致,其modifier可以擴(kuò)大,不可以縮小 ;
    3、 override的子類的方法所拋出的異常只能是父類方法拋出異常的子異常;
    4、被private、final等關(guān)鍵字修飾的方法是不能被override的;
    5、 一個(gè)不是用abstract標(biāo)識(shí)的方法不可以override成abstract方法。

    • Overload 特點(diǎn) :
      1、在使用重載時(shí)只能通過不同的參數(shù)樣式(例如,不同的參數(shù)類型,不同的參數(shù)個(gè)數(shù),不同的參數(shù)順序);
      2、方法的異常類型和數(shù)目不會(huì)對重載造成影響;
      3、不能通過訪問權(quán)限、返回類型、拋出的異常進(jìn)行重載(例如,如果某一方法在父類中是訪問權(quán)限是priavte,那么就不能在子類對其進(jìn)行重載,如果定義的話,也只是定義了一個(gè)新方法,而不會(huì)達(dá)到重載的效果)。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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