📜  Java中方法重载的不同方法(1)

📅  最后修改于: 2023-12-03 15:31:49.500000             🧑  作者: Mango

Java中方法重载的不同方法

方法重载是Java中的一种机制,它允许在同一个类中定义具有相同名称但参数类型或个数不同的多个方法。在程序调用方法时,编译器会根据实参的类型和个数来决定具体调用哪个方法。这篇文章将介绍Java中方法重载的不同方法。

相同参数类型不同顺序

方法重载允许参数的顺序不同,只要参数的类型和个数是相同的。例如,下面的代码定义了两个名称相同但参数顺序不同的方法:

public static int add(int x, int y) {
    return x + y;
}

public static int add(int y, int x) {
    return x + y;
}

在调用这两个方法时,无论实参的顺序是怎样的,都会调用正确的方法:

int sum1 = add(2, 3); // 实参顺序:2, 3
int sum2 = add(3, 2); // 实参顺序:3, 2
相同参数类型不同数量

方法重载也允许参数的数量不同,只要参数的类型是相同的。例如,下面的代码定义了三个名称相同但参数数量不同的方法:

public static int add(int x) {
    return x;
}

public static int add(int x, int y) {
    return x + y;
}

public static int add(int x, int y, int z) {
    return x + y + z;
}

在调用这三个方法时,编译器会根据实参的数量来决定具体调用哪个方法:

int a = add(1);          // 调用 add(int)
int b = add(1, 2);       // 调用 add(int, int)
int c = add(1, 2, 3);    // 调用 add(int, int, int)
相同名称不同返回类型

方法重载也允许名称相同但返回类型不同的方法。例如,下面的代码定义了两个名称相同但返回类型不同的方法:

public static int add(int x, int y) {
    return x + y;
}

public static double add(double x, double y) {
    return x + y;
}

在调用这两个方法时,编译器会根据实参的类型来决定具体调用哪个方法:

int sum1 = add(2, 3);       // 调用 add(int, int),返回类型为 int
double sum2 = add(2.0, 3.0); // 调用 add(double, double),返回类型为 double

注意,返回类型不同的两个方法,它们的参数类型和个数必须不同,否则编译器将无法决定具体调用哪个方法。

不同访问修饰符

方法重载还允许在同一个类中定义具有相同名称和参数列表,但不同访问修饰符(public、protected、default、private)的方法。例如:

public void go() {
    System.out.println("go");
}

void go(int x) {
    System.out.println("go " + x);
}

protected void go(String s) {
    System.out.println("go " + s);
}

private void go(double d) {
    System.out.println("go " + d);
}

方法的访问修饰符决定了方法的可见性,可以根据具体情况来选择使用不同的访问修饰符。

总结

Java中的方法重载机制允许在同一个类中定义具有相同名称但参数类型或个数不同的多个方法。方法重载可以提高代码的重用性和灵活性,但我们需要注意遵守方法重载的规则,避免混淆。常见的方法重载包括相同参数类型不同顺序、相同参数类型不同数量、相同名称不同返回类型、和不同访问修饰符的方法。