Java中的重载方法

And*_*bey 5 java overloading

必须满足什么条件才能使两个方法正确地成为重载方法?

是否两个方法的参数列表至少必须不同,例如

public void A() { //... }
public void A(int val) { //.. } 
Run Code Online (Sandbox Code Playgroud)

因此,仅改变return类型和/或access修饰符就不会产生两个重载方法吗?

小智 5

你是对的。返回类型和访问修饰符不是方法重载的限定因素。使方法合格的是传递的参数,即参数的类型,传递的参数数量或两者。


Mar*_*nik 3

规则远非任意:假设你有

String a() {}
Date a() {}
Run Code Online (Sandbox Code Playgroud)

你会怎么称呼a?让我们来看看:

Object o = a(); // which a() is called?
Run Code Online (Sandbox Code Playgroud)

仅访问修饰符不同的方法甚至更没有意义:它们将是同一方法的两个副本,但具有不同的行为。

因此,实际规则将方法签名定义为由每个调用站点固定的部分组成:名称和参数类型。一个类不能有两个具有相同签名的方法。