小编典典

为什么Java不允许覆盖静态方法?

all

为什么不能覆盖静态方法?

如果可能,请举个例子。


阅读 84

收藏
2022-03-08

共1个答案

小编典典

覆盖取决于拥有一个类的实例。多态性的要点是您可以子类化一个类,并且实现这些子类的对象对于超类中定义的相同方法(并在子类中被覆盖)具有不同的行为。静态方法不与类的任何实例相关联,因此该概念不适用。

推动 Java 设计的有两个考虑因素影响了这一点。一个是对性能的担忧:有很多批评 Smalltalk 太慢(垃圾收集和多态调用是其中的一部分),Java
的创建者决心避免这种情况。另一个决定是 Java 的目标受众是 C 开发人员。使静态方法以它们的方式工作有利于 C
程序员熟悉并且速度也非常快,因为无需等到运行时才能确定调用哪个方法。

2022-03-08