方法重載是大多數面向對象編程語言中的一個特性,在這種語言中,兩個或多個方法具有相同的名稱,但具有不同的參數。具體地說,參數的數目、數據類型和/或順序是不同的。在編譯代碼時,正確的方法將根據調用方式自動選擇。方法...
方法重載是大多數面向對象編程語言中的一個特性,在這種語言中,兩個或多個方法具有相同的名稱,但具有不同的參數。具體地說,參數的數目、數據類型和/或順序是不同的。在編譯代碼時,正確的方法將根據調用方式自動選擇。方法在某些編程語言中也稱為函數,因此,方法重載有時也被稱為函數重載。

在面向對象的計算機編程中,當兩個或多個方法同名但參數不同時,稱為方法重載。
方法重載的一個簡單示例是計算正方形面積的方法。它可以定義為getArea(square s)。可以通過添加方法getArea(circle c)來重載此方法來額外計算圓的面積。
方法重載是指方法共享相同的名稱。它們的方法簽名(方法名稱、參數數目和參數數據類型)應該是唯一的。這樣,編譯器就可以確定要執行哪個方法。
構造函數,用于實例化對象的方法,通常是重載的。這是為了用非默認值初始化對象。例如,具有兩個字段(名稱和出生日期,或dob)的employee對象可能具有以下重載構造函數:employee()、employee(name)和employee(name,第一個構造函數創建一個employee對象,其中name和dob字段為空;第二個構造函數設置name字段,但dob字段為空,第三個構造函數同時定義name和dob字段。
方法重載通常是為了使多個方法在邏輯上顯示為單個方法在getArea()示例中,雖然實際有兩個方法,但調用者只能看到一個邏輯的getArea()方法,這樣,getArea()就可以擴展到其他形狀(三角形、梯形、,以此類推,同時仍將自身邏輯地表示為單個方法。
方法也被重載以保持向后兼容性。執行復雜計算的方法可能會被賦予一個新的要求,可以選擇性地執行相同的計算,只需稍加更改即可。將向該方法添加一個新參數,該參數將確定要執行計算-舊方法還是新方法。
為了避免必須查找調用方法的所有情況并添加新參數,可以重載該方法。新方法將具有舊簽名并由現有代碼調用。它本身不包含任何邏輯,只會調用修改后的方法和為新參數傳遞默認值"old way"。新代碼將調用修改后的方法,并用適當的值、舊方法或新方法傳遞新參數。
方法重載是一種多態性,在這種多態性中,同一邏輯方法在實踐中可以多種方式使用。方法重載與方法不同方法重寫是指父類中方法的定義被子類更改的地方。在這種情況下,兩個方法將具有相同的簽名。