老話重提,又是重載和重寫的區別等的概念性問題,記錄下,以后萬一需要,直接查看。
重載(Overload)
每個重載的方法(或者構造函數)都必須有一個獨一無二的參數類型列表。
只能重載構造函數
規則
重寫(Override)
能夠在需要新的子類特有行為時重新在子類中定義方法。
規則
區別:
區別點?????????? 重載方法???????????????????? 重寫方法
參數列表???????? 必須修改?????????????????? 一定不能修改
返回類型???????? 可以修改?????????????????? 一定不能修改
異常???????????? 可以修改??????? 可以減少或刪除,一定不能拋出新的或者更廣的異常
訪問???????????? 可以修改???????????? 一定不能做更養個的限制(可以降低限制)
調用
重載方法:
參數類型決定選擇哪個重載版本(根據聲明的參數類型),這發生在編譯時。被調用的實際方法仍是發生在運行時期的虛擬方法調用。但是編譯器已經知道所調用的方法的簽名。因此,在運行時期,參數匹配已經明確,只是還不知道該方法所在的實際類。
重寫方法:
對象類型(即:堆上實際實例的類型決定調用選擇哪個方法,這發生在運行時期)

重載(Overload)
每個重載的方法(或者構造函數)都必須有一個獨一無二的參數類型列表。
只能重載構造函數
規則
- 被重載的方法 必須 改變參數列表;
- 被重載的方法 可以 改變返回類型;
- 被重載的方法 可以 改變訪問修飾符;
- 被重載的方法 可以 聲明新的或更廣的檢查異常;
- 方法能夠在同一個類中或者在一個子類中被重載。
重寫(Override)
能夠在需要新的子類特有行為時重新在子類中定義方法。
規則
- 參數列表 必須完全 與被重寫方法的相同;
- 返回類型 必須完全 與被重寫方法的返回類型相同;
- 訪問級別的限制性 一定不能 比被重寫方法的 強 ;
- 訪問級別的限制性可以比被重寫方法的弱;
- 重寫方法 一定不能拋出新的檢查異?;虮缺恢貙懙姆椒暶鞯臋z查異常更廣泛 的檢查異常
- 重寫的方法能夠拋出更少或更有限的異常(也就是說,被重寫的方法聲明了異常,但重寫的方法可以什么也不聲明)
- 不能重寫被標示為final的方法 ;
- 如果不能繼承一個方法,則不能重寫這個方法。
區別:
區別點?????????? 重載方法???????????????????? 重寫方法
參數列表???????? 必須修改?????????????????? 一定不能修改
返回類型???????? 可以修改?????????????????? 一定不能修改
異常???????????? 可以修改??????? 可以減少或刪除,一定不能拋出新的或者更廣的異常
訪問???????????? 可以修改???????????? 一定不能做更養個的限制(可以降低限制)
調用
重載方法:
參數類型決定選擇哪個重載版本(根據聲明的參數類型),這發生在編譯時。被調用的實際方法仍是發生在運行時期的虛擬方法調用。但是編譯器已經知道所調用的方法的簽名。因此,在運行時期,參數匹配已經明確,只是還不知道該方法所在的實際類。
重寫方法:
對象類型(即:堆上實際實例的類型決定調用選擇哪個方法,這發生在運行時期)
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
