Java中静态方法与实例方法的同名方法是否属于重载?
Java中静态方法与实例方法的重载判定
先看你提供的代码:
class Main { public static void main(String[] args) { } public static void foo(int a ) { } public void foo() { } }
核心结论
这两个方法属于重载。
判定依据
Java重载的核心规则是:同一类中,方法名相同,但参数列表(参数个数、类型、顺序)不同,即构成重载。方法的静态/非静态修饰符、返回值类型都不属于重载判定的参考条件。
你代码里的两个foo方法,方法名一致,但一个带int类型参数,一个无参数,参数列表存在明显差异,完全符合重载的定义。
静态/非静态特性的影响
二者的静态/非静态区别只是方法本身的特性差异,不影响重载判定:
- 静态
foo(int a)属于类,调用时无需创建实例,直接通过Main.foo(1)即可调用 - 实例
foo()属于对象,必须先创建Main实例,再通过new Main().foo()调用
它们不存在其他特殊情况,就是标准的重载关系。
内容的提问来源于stack exchange,提问作者user129393192
相关产品推荐
相关产品推荐

