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

问题:

为什么不能覆盖静态方法?
如果可能,请使用一个例子。

回答:

覆盖取决于具有类的实例。多态性的观点是,您可以对类进行子类化,实现这些子类的对象对于超类中定义的相同方法(在子类中被覆盖)将具有不同的行为。静态方法与任何类的任何实例无关,因此概念不适用。
推动Java设计的两个因素影响了这一点。一个是对性能的关注:对Smalltalk来说太慢了(垃圾收集和多态调用是其中的一部分),并且Java的创建者被确定为避免这种情况,这一点很受批评。另一个是Java的目标受众是C ++开发人员的决定。使静态方法以C ++程序员熟悉的方式工作,并且也非常快,因为没有必要等到运行时才能找出要调用的方法。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Why doesn’t Java allow overriding of static methods?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

52 + = 53