Java 方法重载

在本文中,您将通过示例了解什么是方法重载以及如何在 Java 中实现方法重载。

在本文中,您将通过示例了解什么是方法重载以及如何在 Java 中实现方法重载。

在 Java 中,如果两个或多个方法的参数不同(参数数量不同、参数类型不同或两者兼有),名称相同。这些方法称为重载方法,此功能称为方法重载。例如:

void func() { ... }
void func(int a) { ... }
float func(double a) { ... }
float func(int a, float b) { ... }

在这里,该 func() 方法被重载。这些方法具有相同的名称,但接受不同的参数。

注意:以上方法的返回类型是不一样的。这是因为方法重载与返回类型无关。重载方法可以具有相同或不同的返回类型,但它们的参数必须不同。

为什么要方法重载?

假设需要实现给定数字的加法,但可以有任意数量的参数(为简单起见,我们假设为 2 或 3 个参数)。

为了完成任务,您可以分别创建两个方法 sum2num(int, int)sum3num(int, int, int) 两个和三个参数。但是,其他程序员以及将来的您可能会感到困惑,因为这两种方法的行为相同但名称不同。

完成此任务的更好方法是重载方法。并且,根据传递的参数,调用重载方法之一。这有助于提高程序的可读性。

int sum(int a, int b) {}
int sum(int a, int b, int c) {}

如何在 Java 中重载方法?

以下是重载方法的不同方法:

通过改变参数数量重载

public class MethodOverloading {
    private static void display(int a){
        System.out.println("Arguments: " + a);
    }

    private static void display(int a, int b){
        System.out.println("Arguments: " + a + " and " + b);
    }

    public static void main(String[] args) {
        display(1);
        display(1, 4);
    }
}

输出

参数:1 参数:1 和 4

通过改变参数的数据类型实现方法重载

public class MethodOverloading {

  // 这个方法接受 int 参数
  private static void display(int a) {
    System.out.println("得到整数:" + a);
  }

  // 这个方法接受字符串参数
  private static void display(String a) {
    System.out.println("得到字符串:" + a);
  }

  public static void main(String[] args) {
    display(1);
    display("Hello");
  }
}

输出

得到整数:1
得到字符串:Hello

在这里,两个重载方法都接受一个参数。然而,一个接受 int 类型的参数,而另一个接受 String 对象。

让我们看一个真是的例子:

public class HelperService {

    private String formatNumber(int value) {
        return String.format("%d", value);
    }

    private String formatNumber(double value) {
        return String.format("%.3f", value);
    }

    private String formatNumber(String value) {
        return String.format("%.2f", Double.parseDouble(value));
    }

    public static void main(String[] args) {
        HelperService hs = new HelperService();
        System.out.println(hs.formatNumber(500));
        System.out.println(hs.formatNumber(89.9934));
        System.out.println(hs.formatNumber("550"));
    }
}

当你运行程序时,输出将是:

500
89.993
550.00

! 注意:在 Java 中,您也可以像方法一样以类似的方式重载构造方法

要点

  • 如果两个或多个方法具有相同的名称,并可以接受不同的参数,此功能称为方法重载。
  • 方法重载通过以下任一方式实现:
    • 改变参数的数量。
    • 或更改参数的数据类型。
  • 如果我们只更改方法的返回类型,则不是方法重载。