场景:同一个类中有两个方法,它们具有相同的名称,具有不同的参数和不同的访问修饰符。 E.g:
public void m1(int a){}
private void m1(String b){}
是否超载?
答案 0 :(得分:3)
答案 1 :(得分:2)
让我们参考这个Java语言规范。
如果一个类的两个方法(无论是在同一个类中声明,还是 既由一个类继承,又一个是声明的,一个是继承的) 相同的名称,但不是覆盖等效的签名,然后是 方法名称被称为重载。
从8.4.2节,我们知道参数类型是签名的一部分,你的两个方法在参数类型上有所不同,所以它们都是重载。
<强> Section 8.4.2 Method Signature 强>
两个方法或构造函数M和N具有相同的签名(如果它们) 具有相同的名称,相同的类型参数(如果有的话)(§8.4.4),以及 在将N的形式参数类型调整为类型之后 M的参数,相同的形式参数类型。
答案 2 :(得分:1)
'同一类中同一方法的两个版本'称为 方法重载或编译时多态 。