Java 方法是否重载?

Java 方法是否重载?,java,methods,overloading,Java,Methods,Overloading,场景:同一个类中有两个同名的方法,它们具有不同的参数和不同的访问修饰符。例如: public void m1(int a){} private void m1(String b){} 它是否超载?是-总之,是的。引述: 这意味着,如果类中的方法具有不同的参数列表,则它们可以具有相同的名称 换句话说,访问修饰符对于本次讨论无关紧要。让我们参考一下Java语言规范 如果一个类的两个方法(无论是在同一个类中声明,还是 由类继承的或一个声明的和一个继承的)都具有 相同的名称,但签名不是等效的,则 方

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

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

它是否超载?

是-总之,是的。引述:

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


换句话说,访问修饰符对于本次讨论无关紧要。

让我们参考一下Java语言规范

如果一个类的两个方法(无论是在同一个类中声明,还是 由类继承的或一个声明的和一个继承的)都具有
相同的名称,但签名不是等效的,则 方法名被称为重载

从第8.4.2节中,我们知道参数类型是签名的一部分,您的两个方法的参数类型不同,因此它们是重载

两个方法或构造函数,M和N,如果它们 具有相同的名称、相同的类型参数(如有)(§8.4.4),以及, 在使N的形式参数类型适应该类型之后 M的参数,形式参数类型相同


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

为什么您认为不是这样?“不重写等价的签名”更为具体
public void m1(列表l)
public void m1(列表l)
有不同的参数列表,但它们是等效的。所以这里没有过载。