为什么不能覆盖静态方法?
如果可能,请举个例子。
覆盖取决于拥有一个类的实例。多态性的要点是您可以子类化一个类,并且实现这些子类的对象对于超类中定义的相同方法(并在子类中被覆盖)具有不同的行为。静态方法不与类的任何实例相关联,因此该概念不适用。
推动 Java 设计的有两个考虑因素影响了这一点。一个是对性能的担忧:有很多批评 Smalltalk 太慢(垃圾收集和多态调用是其中的一部分),Java 的创建者决心避免这种情况。另一个决定是 Java 的目标受众是 C 开发人员。使静态方法以它们的方式工作有利于 C 程序员熟悉并且速度也非常快,因为无需等到运行时才能确定调用哪个方法。