【问题标题】:Can I static method overload a non static method? [duplicate]我可以静态方法重载非静态方法吗? [复制]
【发布时间】:2021-03-03 20:38:21
【问题描述】:

如果我有方法:

public void doSomething(String str1, String str2){}

下面的方法能否重载上面的方法:

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

【问题讨论】:

  • 在方法中加入sysout消息,不到5分钟就能找到自己。
  • 不,因为它不会超载。如果你的意思是覆盖,仍然没有。
  • 另外值得注意的是参数 names 不是方法签名的一部分(并且取决于给编译器和 java 版本的参数,甚至可能不在结果中类文件)。所以这两个方法签名并没有因为参数名称顺序改变而不同。

标签: java overloading


【解决方案1】:

你问的是过载。但是你展示了一个覆盖的例子。

您可以重载静态方法。

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

编辑

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

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

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

【讨论】:

  • 问题不在于覆盖static 方法。这是关于用static 方法 覆盖非static 方法。虽然答案仍然是否定的,但还是有区别的。 (假设问题是“覆盖”,而不是“重载”。)
  • @BeUndead 我才意识到这一点。还在想。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-06
相关资源
最近更新 更多