首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java 方法多載核心規則與實務範例

     編輯:Java 程式設計入門

定義

在同一個類別中,方法名稱相同、參數列表不同(參數個數、型別、順序任一不同),即構成方法多載。與返回值型別、修飾符、拋出異常無關。

三大核心規則

  1. 方法名必須相同
  2. 參數列表必須不同(個數、型別、順序)
  3. 返回型別可以相同也可以不同(不能僅靠返回型別區分)

合法多載範例

public class MathUtils {
    // 1. 參數個數不同
    public int add(int a, int b) { return a + b; }
    public int add(int a, int b, int c) { return a + b + c; }

    // 2. 參數型別不同
    public float add(float a, int b, int c, int d) { return a + b + c + d; }
    public double add(double a, double b) { return a + b; }

    // 3. 參數順序不同
    public String concat(String prefix, int num) { return prefix + num; }
    public String concat(int num, String suffix) { return num + suffix; }
}

非法多載(編譯錯誤)


// 錯誤:僅返回型別不同
public int compute(int a) { return a * 2; }
public double compute(int a) { return a * 2.0; } // Compile Error!

// 錯誤:參數名不同但型別順序相同
public void print(String msg, int times) { ... }
public void print(String text, int count) { ... } // 同一簽名,編譯錯誤

多載解析流程(編譯期靜態綁定)

  1. 精確匹配:引數型別與參數型別完全一致。
  2. 隱含轉型:int → long → float → double、char → int、子類 → 父類。
  3. 自動裝箱/拆箱:int ⇄ Integer。
  4. 可變參數:T... 優先級最低(最後嘗試)。

注意:若多條路徑皆可行,編譯器報「模稜兩可」錯誤,需強制轉型消除歧義。

實務建議

  • 語義一致:多載方法應完成邏輯相似的任務(如各型別加法)。
  • 避免模稜兩可:慎用可變參數與自動裝箱組合(如 void f(int...) vs void f(Integer...))。
  • 考慮預設參數替代:Java 無預設參數,可用 @Nullable + 單一方法 + 內部判斷,或 Builder 模式。
  • 建構子多載:同樣規則,常搭配 this(...) 串聯減少重複代碼。

總結

方法多載是靜態多態的基礎,核心在於「同名異參」。掌握解析優先級、避開陷阱,能讓 API 設計更直觀、易用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved