Java 静态方法是否可以重载非静态方法?

Java 静态方法是否可以重载非静态方法?,java,overloading,Java,Overloading,如果我有一个方法: public void doSomething(String str1, String str2){} 下面的方法是否可以重载上面的方法: public static void doSomething(String str2, String st1){} 你问的是超载问题。但您展示了一个覆盖的示例 您可以重载静态方法 您不能覆盖它们,因为它们不参与多态性 编辑 起初,我认为您的示例是关于在不同的类中声明这两个方法的。那么这将是一个覆盖的例子 现在我看到,如果两个方法都在同

如果我有一个方法:

public void doSomething(String str1, String str2){}
下面的方法是否可以重载上面的方法:

public static void doSomething(String str2, String st1){}

你问的是超载问题。但您展示了一个覆盖的示例

您可以重载静态方法

您不能覆盖它们,因为它们不参与多态性

编辑

起初,我认为您的示例是关于在不同的类中声明这两个方法的。那么这将是一个覆盖的例子

现在我看到,如果两个方法都在同一个类上,那么它将模拟一种重载。我的意思是,它们的签名(方法名和参数类型)是相同的。但是有一个是
static
修饰符


我怀疑这是有效的Java代码。

问题不是过度隐藏
静态方法。它是关于用
静态
方法覆盖非
静态
方法。虽然答案仍然是否定的,但有区别。(假设问题中的“覆盖”是故意的,而不是“过载”)@BeUndead我刚刚意识到了这一点。仍在考虑。通过在方法中放入sysout消息,只需不到5分钟就可以了解您自己。不,因为它不会过载。如果您的意思是覆盖,仍然不是。还值得注意的是,参数名不是方法签名的一部分(并且取决于提供给编译器的参数和java版本,甚至可能不在结果类文件中)。因此,这两个方法签名并不是因为参数名称顺序改变而不同。