一尘不染

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

java

为什么无法覆盖静态方法?

如果可能,请使用示例。


阅读 336

收藏
2020-02-25

共1个答案

一尘不染

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

影响Java设计的因素有两个。一个是对性能的关注:Smalltalk批评它太慢(垃圾回收和多态调用是其中的一部分),Java的创建者决心避免这种情况。另一个决定是Java的目标受众是C 开发人员。使静态方法按其实际方式工作对C 程序员来说是很有益的,而且速度非常快,因为不需要等到运行时就确定要调用哪种方法。

2020-02-25