過載和重寫的區別

2022-10-11 02:57:18 字數 474 閱讀 1534

過載指方法名稱相同,但引數型別個數不同,是行為水平方向不同實現。

對編譯器來說,方法名稱和引數列表組成了乙個唯一鍵,稱為方法簽名,jvm 通過方法簽名決定呼叫哪種過載方法。(方法簽名不包括返回型別)

不管繼承關係如何複雜,過載在編譯時可以根據規則知道呼叫哪種目標方法,因此屬於靜態繫結。

jvm 在過載方法中選擇合適方法的順序:

精確匹配。

基本資料型別自動轉換成更大表示範圍。

自動拆箱與裝箱。

子類向上轉型。

可變引數。

重寫指子類實現介面或繼承父類時,保持方法簽名完全相同,實現不同方法體,是行為垂直方向不同實現。

元空間有乙個方法表儲存方法資訊,如果子類重寫了父類的方法,則方法表中的方法引用會指向子類實現。

父類引用執行子類方法時無法呼叫子類存在而父類不存在的方法。

重寫方法訪問許可權不能變小,返回型別和丟擲的異常型別不能變大,必須加 @override。

過載和重寫區別

區別就是 過載 只在自己內部類 繼承的時候通過變換返回引數型別和引數個數來實現的 或者只在乙個類中的話,就是通過構造方法的引數不同來進行過載 左邊的是重寫,右邊的是過載 右邊子類的方法和父類的方法是完全兩個方法,因為引數變了 重寫 子類和父類之間 是子類實現父類同名方法,而且方法內部的引數型別要一模...

重寫和過載區別

當子類繼承父類的方法,這些方法不滿足自身需求時,子類可以重寫從父類繼承的方法。重寫的規則 修飾符 返回型別 方法名 引數 public void skill package jicheng public class dog extends anima package jicheng 子類 publi...

重寫和過載的區別

過載是指同乙個類中有若干個名稱相同但引數不同的方法。呼叫方法時,系統會根據實參情況,呼叫引數完全匹配的那個方法。重寫是指在繼承關係中,在派生類中重寫由基類繼承來的方法,這時基類和派生類中就有兩個同名的方法。系統根據物件的 實際型別呼叫相應版本的方法,當物件型別為基類時,系統呼叫基類中的方法。當物件型...