English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java 기본 튜토리얼

Java 流程控制

Java 数组

Java 面向对象(I)

Java 面向对象(II)

Java 面向对象(III)

Java 예외 처리

Java 列表(List)

Java Queue(队列)

Java Map集合

Java Set集合

Java 输入输出(I/O)

Java Reader/Writer

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

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

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

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

1.通过更改参数数量来重载

class MethodOverloading {
    private static void display(int a){
        System.out.println("参数: “" + a);
    }
    private static void display(int a, int b){
        System.out.println("参数: “" + a + “和” + b);
    }
    public static void main(String[] args) {
        display(1);
        display(1, 4);
    }
}

输出

参数: 1
参数: 1 和 4

2.通过更改参数的数据类型

class MethodOverloading {
    //此方法接受int
    private static void display(int a){
        System.out.println("得到了整数数据.");
    }
    //此方法接受String对象
    private static void display(String a){
        System.out.println("得到了String对象。");
    }
    public static void main(String[] args) {
        display(1);
        display("Hello");
    }
}

输出

得到了整数数据
得到了String对象。

在这里,两个重载方法都接受一个参数。但是,一个接受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 생성자 오버로드

주의사항

  • 두 개나 많은 매개변수를 받는 두 개나 많은 메서드가 같은 클래스 내에 같은 이름을 가질 수 있습니다. 이 기능은 메서드 오버로드라고 합니다.

  • 메서드 오버로드는 다음 중 하나의 방법으로 실현할 수 있습니다:

    • 매개변수의 수를 변경할 수 있습니다.

    • 또는 매개변수의 데이터 타입을 변경할 수 있습니다.

  • 메서드 오버로드는 메서드의 반환형만 변경하여는 실현할 수 없습니다.