Java重寫與重載之間的區別。本站提示廣大學習愛好者:(Java重寫與重載之間的區別)文章只能為提供參考,不一定能成為您想要的結果。以下是Java重寫與重載之間的區別正文
重寫(Override)
重寫是子類對父類的允許訪問的辦法的完成進程停止重新編寫, 前往值和形參都不能改動。即外殼不變,中心重寫!
重寫的益處在於子類可以依據需求,定義特定於自己的行為。 也就是說子類可以依據需求完成父類的辦法。
重寫辦法不能拋出新的反省異常或許比被重寫辦法聲明愈加廣泛的異常。例如: 父類的一個辦法聲明了一個反省異常 IOException,但是在重寫這個辦法的時分不能拋出 Exception 異常,由於 Exception 是 IOException 的父類,只能拋出 IOException 的子類異常。
辦法的重寫規則
- 參數列表必需完全與被重寫辦法的相反;
- 前往類型必需完全與被重寫辦法的前往類型相反;
- 訪問權限不能比父類中被重寫的辦法的訪問權限更低。例如:假如父類的一個辦法被聲明為public,那麼在子類中重寫該辦法就不能聲明為protected。
- 父類的成員辦法只能被它的子類重寫。
- 聲明為final的辦法不能被重寫。
- 聲明為static的辦法不能被重寫,但是可以被再次聲明。
- 子類和父類在同一個包中,那麼子類可以重寫父類一切辦法,除了聲明為private和final的辦法。
- 子類和父類不在同一個包中,那麼子類只可以重寫父類的聲明為public和protected的非final辦法。
- 重寫的辦法可以拋出任何非強迫異常,無論被重寫的辦法能否拋出異常。但是,重寫的辦法不能拋出新的強迫性異常,或許比被重寫辦法聲明的更普遍的強迫性異常,反之則可以。
- 結構辦法不能被重寫。
- 假如不能承繼一個辦法,則不能重寫這個辦法。
重載(Overload)
重載(overloading) 是在一個類外面,辦法名字相反,而參數不同。前往類型可以相反也可以不同。
每個重載的辦法(或許結構函數)都必需有一個無獨有偶的參數類型列表。
只能重載結構函數
重載規則
- 被重載的辦法必需改動參數列表(參數個數或類型或順序不一樣);
- 被重載的辦法可以改動前往類型;
- 被重載的辦法可以改動訪問修飾符;
- 被重載的辦法可以聲明新的或更廣的反省異常;
- 辦法可以在同一個類中或許在一個子類中被重載。
- 無法以前往值類型作為重載函數的區分規范
區別點 | 重載辦法 | 重寫辦法 |
參數列表
必需修正
一定不能修正
前往類型
可以修正
一定不能修正
異常
可以修正
可以增加或刪除,一定不能拋出新的或許更廣的異常
訪問
可以修正
一定不能做更嚴厲的限制(可以降低限制)
總結
辦法的重寫(Overriding)和重載(Overloading)是java多態性的不同表現,重寫是父類與子類之間多態性的一種表現,重載是一類中多態性的一種表現。