過載和重寫
阿新 • • 發佈:2021-07-27
過載:
1、 過載是在編譯器通過方法中形參的靜態型別確定呼叫方法版本的過程。
2、 過載是多型在編譯期的表現形式
3、 過載的判定只有兩個條件(其他的條件都不能作為判定):
1、 方法名一致
2、形參列表不同
重寫:
1、重寫在方法執行時,通過呼叫者的實際型別來確定呼叫的方法版本。(具體細說,就是子父類中的重寫方法在對應的class檔案常量池的位置相同,一旦子類沒有重寫,那麼子類的例項就會沿著這個位置往上找,直到找到父類的同名方法)
2、重寫只發生在可見的例項方法中:
1、靜態方法不存在重寫,形式上的重寫只能說是隱藏。
2、私有方法也不存在重寫,父類中private的方法,子類中就算定義了,就是相當於一個新的方法。
3、靜態方法和例項方法不存在相互重寫。
3、重寫滿足一個規則:兩同兩小一大
1、兩同:方法名和形參列表一致
2、兩小:重寫方法的返回值(引用型別)和丟擲異常,要和被重寫方法的返回值(引用型別)和丟擲異常相同或者是其子類。注意,一旦返回值是基本資料型別,那麼重寫方法和被重寫方法必須相同,且不存在自動拆裝箱的問題。
3、一大:重寫方法的訪問修飾符大於等於被重寫方法的訪問修飾符。