Java 教程

Java 控制語句

面向物件程式設計

Java 內建類

Java 檔案處理

Java 錯誤和異常

Java 多執行緒

Java 同步

Java 網路

Java 集合

Java 介面

Java 資料結構

Java 集合演算法

高階 Java

Java 雜項

Java API 和框架

Java 類參考

Java 有用資源

Java - 方法過載



Java 方法過載

當一個有兩個或多個同名但引數不同的方法時,在呼叫時根據傳遞的引數呼叫相應的方法(或相應的方法體將與呼叫行動態繫結)。這種機制稱為方法過載。

方法過載的優點

方法過載提高了程式碼的可讀性並減少了程式碼冗餘。方法過載還有助於實現編譯時多型

方法過載示例

如果您觀察以下示例,這裡我們建立了一個名為 Tester 的類,此類有兩個同名(add)且返回型別相同的方法,唯一的區別是它們接受的引數(一個方法接受兩個整型變數,另一個接受三個整型變數)。

class Calculator{
   public static int add(int a, int b){
      return a + b;
   }
   public static int add(int a, int b, int c){
      return a + b + c;
   }
}

當您呼叫 add() 方法時,根據您傳遞的引數,相應的方法體將被執行。

int result = Calculator.add(1,2);  // returns 3;
result = Calculator.add(1,2,3);    // returns 6;

Java 方法過載的不同方法

在類中具有相同名稱的方法時,可以使用以下方法實現方法過載。

  • 使用不同數量的引數
  • 使用不同型別的引數

Java 方法過載的無效方法

在類中具有相同名稱的方法時,無法使用以下方法實現方法過載。編譯器會抱怨重複方法的存在。

  • 使用不同的返回型別
  • 使用靜態和非靜態方法

方法過載:不同數量的引數

您可以根據不同數量的引數實現方法過載。

示例:不同數量的引數(靜態方法)

在此示例中,我們建立了一個 Calculator 類,它有兩個同名但引數不同的靜態方法,分別用於新增兩個和三個 int 值。在 main() 方法中,我們正在呼叫這些方法並列印結果。根據傳遞的引數型別,編譯器決定要呼叫的方法,並相應地列印結果。

package com.tutorialspoint;

class Calculator{
   public static int add(int a, int b){
      return a + b;
   }
   public static int add(int a, int b, int c){
      return a + b + c;
   }
}

public class Tester {
   public static void main(String args[]){
      System.out.println(Calculator.add(20, 40));
      System.out.println(Calculator.add(40, 50, 60));
   }
}

輸出

60
150

示例:不同數量的引數(非靜態方法)

在此示例中,我們建立了一個 Calculator 類,它有兩個同名但引數不同的非靜態方法,分別用於新增兩個和三個 int 值。在 main() 方法中,我們正在使用 Calculator 類的物件呼叫這些方法並列印結果。根據傳遞的引數數量,編譯器決定要呼叫的方法,並相應地列印結果。

package com.tutorialspoint;

class Calculator{
   public int add(int a, int b){
      return a + b;
   }
   public int add(int a, int b, int c){
      return a + b + c;
   }
}

public class Tester {
   public static void main(String args[]){
      Calculator calculator = new Calculator();   
      System.out.println(calculator.add(20, 40));
      System.out.println(calculator.add(40, 50, 60));
   }
}

輸出

60
150

方法過載:不同型別的引數

您可以根據不同型別的引數實現方法過載。

示例:不同型別的引數

在此示例中,我們建立了一個 Calculator 類,它有兩個同名但引數型別不同的非靜態方法,分別用於新增兩個 int 值和兩個 double 值。在 main() 方法中,我們正在使用 Calculator 類的物件呼叫這些方法並列印結果。根據傳遞的引數型別,編譯器決定要呼叫的方法,並相應地列印結果。

package com.tutorialspoint;

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

public class Tester {
   public static void main(String args[]){
      Calculator calculator = new Calculator();   
      System.out.println(calculator.add(20, 40));
      System.out.println(calculator.add(20.0, 40.0));
   }
}

輸出

60
60.0
廣告