細說一下重寫和過載

2021-09-24 09:27:22 字數 1230 閱讀 7024

這兩個都是多型的一種表現形式。

過載:

1、 過載是在編譯器通過方法中形參的靜態型別確定呼叫方法版本的過程。

2、 過載是多型在編譯期的表現形式

3、 過載的判定只有兩個條件(其他的條件都不能作為判定):

1、 方法名一致

2、形參列表不同

重寫:

1、重寫在方法執行時,通過呼叫者的實際型別來確定呼叫的方法版本。(具體細說,就是子父類中的重寫方法在對應的class檔案常量池的位置相同,一旦子類沒有重寫,那麼子類的例項就會沿著這個位置往上找,直到找到父類的同名方法

2、重寫只發生在可見的例項方法中:

1、靜態方法不存在重寫,形式上的重寫只能說是隱藏。

2、私有方法也不存在重寫,父類中private的方法,子類中就算定義了,就是相當於乙個新的方法。

3、靜態方法和例項方法不存在相互重寫。

3、重寫滿足乙個規則:兩同兩小一大

1、兩同:方法名和形參列表一致

2、兩小:重寫方法的返回值(引用型別)和丟擲異常,要和被重寫方法的返回值(引用型別)和丟擲異常相同或者是其子類。注意,一旦返回值是基本資料型別,那麼重寫方法和被重寫方法必須相同,且不存在自動拆裝箱的問題。

3、一大:重寫方法的訪問修飾符大於等於被重寫方法的訪問修飾符。

過載和重寫

物件導向的三大特性 繼承 封裝 多型。過載和重寫是多型的兩種表現形式。過載和重寫又有什麼區別呢?1 層次不同 重寫 發生在父類和子類之間。是子類重寫父類的方法,具有相同的方法名和方法引數。比如說,父子兩人都去吃飯 相同的方法 吃的是麵條 引數 父親飯量大,吃兩碗,兒子飯量小,就能吃一碗 實現了吃飯的...

過載和重寫

asp.net unity開發 net培訓 期待與您交流!過載 乙個類裡面有多個方法,方法名稱是相同的,返回值可以不同,引數列表的個數 型別 順序不同。區分過載方法可以通過引數列表的個數 型別 順序來決定呼叫哪個方法。過載可以子類過載父類的方法,並且可以靜態非靜態之間轉換。重寫 覆蓋 一般是指父類和...

重寫 和 過載

型構就是指方法的組成結構,具體包括方法的名稱和引數,涵蓋引數的數量 型別以及出現的順序,但是不包括方法的返回值型別,訪問許可權修飾符,以及abstract static final等修飾符。1.public void method int i,string s 4.5.public string m...