Override和Overload的含義與區(qū)別

Overload

顧名思義,就是Over(重新)——load(加載),所以中文名稱是重載。它可以表現(xiàn)類的多態(tài)性,可以是函數(shù)里面可以有相同的函數(shù)名但是參數(shù)名、類型不能相同;或者說可以改變參數(shù)、類型但是函數(shù)名字依然不變。

重載需要注意以下幾點:
1.重載是通過不同的方法參數(shù)來區(qū)分的。
2.不能通過方法的訪問權(quán)限、返回值和異常類型來進(jìn)行重載。
3.對于繼承來說,如果基類方法的訪問權(quán)限是private,就不能在派生類中對其進(jìn)行重載。如果派生類中也定義了一個同名的函數(shù),這只是一個新的方法,不會達(dá)到重載的效果。

Override

就是ride(重寫)的意思,在子類繼承父類的時候子類中可以定義某方法與其父類有相同的名稱和參數(shù),當(dāng)子類在調(diào)用這一函數(shù)時自動調(diào)用子類的方法,而父類相當(dāng)于被覆蓋(重寫)了。

重寫需要注意一下幾點:
1.派生類中的覆蓋方法必須和基類中被覆蓋的方法有相同的的函數(shù)名和參數(shù)。
2.派生類中的覆蓋方法的返回值必須和基類中被覆蓋的方法的返回值相同。
3.派生類中的覆蓋方法所拋出的異常必須和基類中被覆蓋的方法所拋出的異常一致。
4.基類中被覆蓋的方法不能是private,否則子類只是定義一個方法,并沒有對其覆蓋。


方法的重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫Overriding是父類與子類之間多態(tài)性的一種表現(xiàn),重載Overloading是一個類中多態(tài)性的一種表現(xiàn)。如果在子類中定義某方法與其父類有相同的名稱和參數(shù),我們說該方法被重寫 (Overriding)。子類的對象使用這個方法時,將調(diào)用子類中的定義,對它而言,父類中的定義如同被“屏蔽”了。如果在一個類中定義了多個同名的方法,它們或有不同的參數(shù)個數(shù)或有不同的參數(shù)類型,則稱為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類型。

區(qū)別

  • 覆蓋是子類和父類之間的關(guān)系,是垂直關(guān)系。重載是同一個類中的方法之間的關(guān)系,是水平關(guān)系。
  • 覆蓋只能由一個方法或只能由一對方法產(chǎn)生關(guān)系。重載是多個方法之間的關(guān)系。
  • 覆蓋要求 參數(shù)列表相同。重載要求參數(shù)列表不同。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • (一)Java部分 1、列舉出JAVA中6個比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨云閱讀 7,265評論 0 62
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,734評論 18 399
  • 本文出自 Eddy Wiki ,轉(zhuǎn)載請注明出處:http://eddy.wiki/interview-java.h...
    eddy_wiki閱讀 1,275評論 0 5
  • 一.C++中的重寫、重載、重定義 1.重載(overload) 概念 同一個類中的函數(shù)具有相同的名稱,但是參數(shù)的列...
    Geeks_Liu閱讀 6,888評論 0 3
  • 工作日志 所收任務(wù) 準(zhǔn)備分享 演講內(nèi)容安排 PPT準(zhǔn)備 完成情況 完成內(nèi)容安排 40% PPT內(nèi)容與設(shè)計 存在問題...
    錢佳辰_Hangzhou閱讀 122評論 0 0

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