请注意,在下面的示例中,仅更改了参数的顺序。所以我的问题是——我们可以把下面的例子称为方法重载吗?
public void show(String s, int a){
System.out.println("Test.show(String, int)");
}
public void show(int s, String a){
System.out.println("Test.show(int, String)");
}
请注意,在下面的示例中,仅更改了参数的顺序。所以我的问题是——我们可以把下面的例子称为方法重载吗?
public void show(String s, int a){
System.out.println("Test.show(String, int)");
}
public void show(int s, String a){
System.out.println("Test.show(int, String)");
}
是的,这绝对是方法重载。
如果一个类的两个方法(无论是在同一个类中声明,还是都由一个类继承,或者一个声明一个继承)具有相同的名称但签名不是覆盖等效的,则该方法名称被称为超载。
“替代等效”在第 8.4.2 节中进行了描述:
如果两个方法具有相同的名称和参数类型,则它们具有相同的签名。
[ ...有关“相同参数类型...的详细信息...]
方法 m1 的签名是方法 m2 签名的子签名,如果:
m2 与 m1 具有相同的签名,或
m1 的签名与 m2 签名的擦除(第 4.6 节)相同。
如果 m1 是 m2 的子签名或 m2 是 m1 的子签名,则两个方法签名 m1 和 m2 是覆盖等效的。