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

标签 java static overriding static-methods

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

如果可能,请举个例子。

最佳答案

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

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

关于java - 为什么Java不允许覆盖静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2223386/

相关文章:

c# - 覆盖 'public' 继承成员时无法更改访问修饰符 '

Java 表格布局

java - 卡在 "Exception in thread "main"java.util.NoSuchElementException

c++ - 函数指针指向静态成员类的错误 C2065

java - 覆盖接口(interface)中的方法是否有意义

java - 覆盖未在 Android 中调用的方法

java - 从 .jar Java 中的当前目录搜索文件

java - 显示标签中的 Struts2 属性标签

java - 为什么我收到错误 "non-static variable this cannot be referenced from a static context"?

c# - 我应该尽可能使我的方法静态化吗?