对初学者友善的系列文章-了解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)。但是,其他程序员以及您将来可能会感到困惑,因为这两种方法的行为相同,但名称不同。
    完成此任务的更好方法是重载方法。并且,根据传递的参数,调用其中一个重载方法。这有助于提高程序的可读性。

如何在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中,您还可以类似方法的方式重载构造函数。

重要事项

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

参考文档

[1]Parewa Labs Pvt. Ltd.Java Generics[EB/OL].https://www.programiz.com/java-programming/method-overloading,2020-01-01.

猜你喜欢

转载自blog.csdn.net/zsx0728/article/details/109488942