override與重載的區別「override是什麼牌子」

overload意為重載,override意為覆蓋,overwrite意為重寫。從中文意思上看,並無差別,但是如下所示,給出英文定義:
Overloading occurs when two or more methods in one class have the same method name but different parameters.
Overriding or overwrite means having two methods with the same method name and parameters (i.e., method signature). One of the methods is in the parent class and the other is in the child class.

即overload為同一個類中,存在多個方法名相同的函數,但是他們擁有不同的參數(參數個數,類型,順序)。
而override和overwrite為子類和父類之間,子類和父類擁有同樣的方法名和參數列表,只是將方法體重寫。這是面向對象編程的多態性。

重載規則
(1)包含多個同名函數,但是參數各不相同。
(2)參數類型、參數個數、參數順序(不同類型間)至少有一個不同。
(3)可以改變返回值類型(不能作為重載判斷依據)
(4)可以改變訪問修飾符(不能作為重載判斷依據)
(5)可以改變異常類型和數量(不能作為重載判斷依據)

重寫規則
(1)存在於子類和父類之間
(2)子類必須和父類的方法名和參數列表必須完全相同。
(3)可以改變返回值類型,但子類返回值類型必須是父類返回值類型的派生類。
(4)可以改變訪問修飾符,但是子類權限只能更開放。
(5)聲明為final的方法不能被重寫。
(6)聲明為static的方法不能被重寫,但是可以被重新聲明。
(7)構造器不能被重寫。
(8)子類和父類在同一個包中時,子類可以重寫父類所有方法(出private和final)。
(9)子類和父類在不同包中時,子類只能重寫父類的public和protected的非final方法。
(10)重寫可以拋出任何非強制性異常,但是不能拋出新的強制性異常,或者比父類方法更廣泛的異常。

強制性異常:必須在拋出異常的部分try catch或者向上throws。
非強制性異常:用不用try catch和throw都可以。
java中只有RuntimeException是強制性異常,其餘均為非強制性異常。

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/275446.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-17 14:21
下一篇 2024-12-17 14:21

相關推薦

發表回復

登錄後才能評論