方法是否重载?

时间:2017-12-12 18:00:25

标签: java methods overloading

场景:同一个类中有两个方法,它们具有相同的名称,具有不同的参数和不同的访问修饰符。 E.g:

public void m1(int a){}
private void m1(String b){}

是否超载?

3 个答案:

答案 0 :(得分:3)

是的 - 总之,是的。引用Oracle's Java tutorial

  

这意味着如果类中的方法具有不同的参数列表,则它们可以具有相同的名称

换句话说 - 访问修饰符对此讨论无关紧要。

答案 1 :(得分:2)

让我们参考这个Java语言规范。

  

Section 8.4.9 Overloading

     

如果一个类的两个方法(无论是在同一个类中声明,还是   既由一个类继承,又一个是声明的,一个是继承的)   相同的名称,但不是覆盖等效的签名,然后是   方法名称被称为重载。

从8.4.2节,我们知道参数类型是签名的一部分,你的两个方法在参数类型上有所不同,所以它们都是重载。

  

<强> Section 8.4.2 Method Signature

     

两个方法或构造函数M和N具有相同的签名(如果它们)   具有相同的名称,相同的类型参数(如果有的话)(§8.4.4),以及   在将N的形式参数类型调整为类型之后   M的参数,相同的形式参数类型

答案 2 :(得分:1)

'同一类中同一方法的两个版本'称为 方法重载或编译时多态