Skip to content

方法重载

在同一个类中,允许定义多个同名方法,但参数列表不同。编译器会根据调用时传入的参数来决定执行哪个方法。

基本原则

Java 判断是否重载只看方法签名(方法名 + 参数列表)

参数列表:

  • 参数数量
  • 参数类型
  • 参数顺序

不包括:

  • 返回值
  • 参数名
  • 访问修饰符

三种函数重载

形参个数不同

java
public class Test {

    public void show(int a) {
        System.out.println(a);
    }

    public void show(int a, int b) {
        System.out.println(a + "," + b);
    }

}
java
show(10);
show(10,20);

参数列:

int
int int

参数类型不同

java
public class Test {

    public void print(int a) {
        System.out.println("int:" + a);
    }

    public void print(double a) {
        System.out.println("double:" + a);
    }

}
java
print(10);
print(10.5);

参数列:

int
double

参数顺序不同

java
public class Test {

    public void show(String name, int age) {
        System.out.println(name + "," + age);
    }

    public void show(int age, String name) {
        System.out.println(age + "," + name);
    }

}
java
show("张三", 20);
show(20, "张三");

参数列:

String int
int String

不是方法重载的情况

只改变返回值

返回值不参与重载判断。

java
public int add(int a, int b) {
    return a + b;
}

public double add(int a, int b) { // ❌ 编译错误
    return a + b;
}

只改变参数名

参数名不参与重载判断

java
public void test(int a) {}

public void test(int b) {} // ❌ 编译错误