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)。然而,其他程序员以及您自己将来可能会感到困惑,因为这两个方法的功能相同,但名称不同。

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


如何在 Java 中执行方法重载?

以下是执行方法重载的不同方法

1. 通过更改参数数量进行重载

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);
    }
}

输出:

Arguments: 1
Arguments: 1 and 4

2. 通过更改参数数据类型进行方法重载

class MethodOverloading {

    // this method accepts int
    private static void display(int a){
        System.out.println("Got Integer data.");
    }

    // this method  accepts String object
    private static void display(String a){
        System.out.println("Got String object.");
    }

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

输出:

Got Integer data.
Got String object.

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


让我们看一个实际的例子

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 中,您也可以通过与方法类似的方式重载构造函数。

推荐阅读: Java 构造函数重载


要点

  • 在同一个类中,两个或多个方法可以具有相同的名称,只要它们的参数不同。此功能称为方法重载。
  • 方法重载通过以下方式实现:
    • 更改参数数量。
    • 或更改参数的数据类型。
  • 如果只更改方法的返回类型,则不是方法重载。参数的数量必须不同。
你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战