鍍金池/ 教程/ Java/ Java方法重載
Java參數傳遞
Java靜態(tài)內部類
Java final關鍵字
http://www.yiibai.com/java_object_oriented_design/java_inheritan
Java泛型類
Java標準注解
Java接口教程
Java注解
Java枚舉類型
http://www.yiibai.com/java_object_oriented_design/java_class_ins
Java接口實現
Java哈希編碼
Java泛型約束
http://www.yiibai.com/java_object_oriented_design/java_import.ht
Java注解默認值
Java異常拋出
Java不可變對象
Java類基礎
Java接口繼承
Java類方法
Java訪問級別
Java對象克隆
Java初始化塊
Java可變長度參數
Java接口字段
Java對象相等比較(Equals)
Java實例和靜態(tài)方法
Java繼承方法隱藏(覆蓋)
Java面向對象設計
Java對象finalize()方法
Java抽象類和方法
Java Object類
Java泛型方法和構造函數
Java枚舉體
Java接口方法
Java this關鍵字
Java注解類型的限制
Java main()方法
Java Enum類
Java注解用法
Java枚舉比較
Java注解類型
Java內部類成員
Java繼承和構造函數
Java類實例化
Java內部類類型
Java對象toString()方法
Java finally塊
Java繼承教程
Java自定義異常
Java枚舉值
Java接口作為類型
Java異常類
Java方法覆蓋教程
http://www.yiibai.com/java_object_oriented_design/java_class_bas
Java枚舉方法
Java方法重載
http://www.yiibai.com/java_object_oriented_design/java_interface
Java異常用法
Java內部類
Java類成員訪問級別
Java異常處理教程
Java注解反射
Java構造函數(構造器)
Java導入(import語句的用法)

Java方法重載

在同一類中具有多個具有相同名稱的方法稱為方法重載。類中具有相同名稱的方法可以是聲明的方法,繼承的方法或兩者的組合。
重載方法必須具有不同數量的參數,不同類型的參數或兩者。方法的返回類型,訪問級別和throws子句對使其成為重載方法沒有任何影響。參考以下示例代碼,其中有幾個名稱為 m1 方法。

import java.io.IOException;

class MyClass {
  public void m1(int a) {
    // Code goes here
  }

  public void m1(int a, int b) {
    // Code goes here
  }

  public int m1(String a) {
    // Code goes here
    return 0;
  }

  public int m1(String a, int b) throws IOException {
    // Code goes here
    return 0;
  }
}

示例-1

下面的代碼顯示了如何使用重載。參考以下代碼 -

public class Main {

  public double add(int a, int b) {
    System.out.println("Inside add(int a, int b)");
    double s = a + b;
    return s;//from  ww  w. ja  v a 2  s . c  om
  }

  public double add(double a, double b) {
    System.out.println("Inside add(double a,  double   b)");
    double s = a + b;
    return s;
  }

  public static void main(String[] args) {
    Main ot = new Main();
    int i = 1;
    int j = 1;
    double d1 = 10.42;
    float f1 = 22.3F;
    float f2 = 24.5F;
    short s1 = 22;
    short s2 = 26;

    ot.add(i, j);
    ot.add(d1, j);
    ot.add(i, s1);
    ot.add(s1, s2);
    ot.add(f1, f2);
    ot.add(f1, s2);
  }
}

上面的代碼生成以下結果。

Inside add(int a, int b)
Inside add(double a,  double   b)
Inside add(int a, int b)
Inside add(int a, int b)
Inside add(double a,  double   b)
Inside add(double a,  double   b)

實例-2

有時,重載方法和自動類型擴展可能會混淆編譯器,導致編譯器錯誤。

class Adder {
  public double add(int a, double b) {
    return a + b;
  }

  public double add(double a, int b) {
    return a + b;
  }
}

public class Main {
  public static void main(String[] args) {
    Adder a = new Adder();
    // double d = a.add(2, 3); // A compile-time error
    double d1 = a.add((double) 2, 3); // OK. Will use add(double, int)
    double d2 = a.add(2, (double) 3); // OK. Will use add(int, double)

  }
}

上一篇:Java this關鍵字下一篇:Java注解類型