请注意,以下示例仅更改参数的顺序。所以我的问题是 - 我们可以在下面调用示例是方法重载吗?
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)");
}
答案 0 :(得分:10)
是的,这绝对是方法重载。
如果一个类的两个方法(无论是在同一个类中声明,还是由一个类继承,或者一个是声明的,一个是继承的)都具有相同的名称,但签名不是覆盖等价的,那么方法名称是据说超载了。
“覆盖等效”在section 8.4.2中描述:
如果两个方法具有相同的名称和参数类型,则它们具有相同的签名。
[...关于“相同论点类型......”的详细信息
方法m1的签名是方法m2的签名的子签名,如果:
m2与m1具有相同的签名,或
m1的签名与m2签名的删除(§4.6)相同。
如果m1是m2的子签名或m2是m1的子签名,则两个方法签名m1和m2是覆盖等价的。