可以将方法参数的顺序更改称为方法重载吗?

时间:2013-09-03 17:39:25

标签: java overloading

请注意,以下示例仅更改参数的顺序。所以我的问题是 - 我们可以在下面调用示例是方法重载吗?

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)");
}

1 个答案:

答案 0 :(得分:10)

是的,这绝对是方法重载。

来自section 8.4.9 of the JLS

  

如果一个类的两个方法(无论是在同一个类中声明,还是由一个类继承,或者一个是声明的,一个是继承的)都具有相同的名称,但签名不是覆盖等价的,那么方法名称是据说超载了。

“覆盖等效”在section 8.4.2中描述:

  

如果两个方法具有相同的名称和参数类型,则它们具有相同的签名。

     

[...关于“相同论点类型......”的详细信息

     

方法m1的签名是方法m2的签名的子签名,如果:

     
      
  • m2与m1具有相同的签名,或

  •   
  • m1的签名与m2签名的删除(§4.6)相同。

  •   
     

如果m1是m2的子签名或m2是m1的子签名,则两个方法签名m1和m2是覆盖等价的。