我可以在 Java 中覆盖和重载静态方法吗?

新手上路,请多包涵

我想知道:

  1. 为什么Java中不能覆盖静态方法?
  2. Java可以重载静态方法吗?

原文由 giri 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 649
1 个回答

严格意义上的静态方法不能被覆盖,但它们可以隐藏父静态方法

实际上,这意味着编译器将在编译时决定执行哪个方法,而不是在运行时,就像它对重写的实例方法所做的那样。

有关简洁的示例,请查看 此处

是 Java 文档,解释了 覆盖 实例方法和 隐藏 类(静态)方法之间的区别。

重写: Java 中的重写只是意味着将根据对象的运行时类型而不是编译时类型调用特定方法(重写静态方法就是这种情况)

隐藏: 静态的父类方法不是子类的一部分(尽管它们是可访问的),因此不存在覆盖它的问题。即使您在子类中添加另一个静态方法,与其父类中的静态方法相同,该子类静态方法也是唯一的,并且不同于其父类中的静态方法。

原文由 opensas 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题