Java:强制不覆盖

时间:2013-08-28 09:45:15

标签: java oop inheritance override

我有一个带有最终方法的超类

public final void foo(){ ... }

5 个答案:

答案 0 :(得分:1)

不,你不能这样做。

使用标记为final的超类方法覆盖子类中的方法是不可能的 。您可以添加具有不同签名的方法

应用于方法的final关键字的目的是它不允许子类方法覆盖它。

答案 1 :(得分:1)

你做不到。 final关键字可以防止这种情况发生。 请参阅final methods in Java on Wikipedia

答案 2 :(得分:1)

您无法覆盖final超级方法。但您可以重载它。

  

如果方法具有不应更改的实现,并且对于对象的一致状态至关重要,则仅使方法成为最终方法。

答案 3 :(得分:1)

最终的主要目的是防止覆盖。所以,你不能覆盖最终方法。 你仍然可以重载最终方法。

答案 4 :(得分:0)

目前尚不清楚为什么必须具有相同的名称。要么它的目的是一个不同的方法,那么它可以有一个不同的名称没有问题,或者你试图做一些你声称不做的重写。

如果您的子类需要一个干扰该方法的接口实现,请考虑该接口实现的内部类。

否则,子类中的方法不会覆盖具有相同名称的超类方法,如果:

  • 它有不同的参数类型
  • 超类方法是私有的
  • 超类方法是package-private,子类位于不同的包中