-2

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

public final void foo(){ ... }

4

5 回答 5

1

你不能。final关键字是为了防止这种情况发生。请参阅Wikipedia 上的 Java 中的最终方法

于 2013-08-28T09:48:58.200 回答
1

你不能覆盖final超级方法。但你可以重载它。

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

于 2013-08-28T09:49:17.300 回答
1

不,你不能这样做。

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

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

于 2013-08-28T09:47:40.070 回答
1

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

于 2013-08-28T09:51:57.983 回答
0

目前尚不清楚为什么您必须使用相同的名称。要么它打算成为一种不同的方法,然后它可以有一个不同的名称而没有问题,或者你正在尝试做某种你声称不做的覆盖。

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

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

  • 它有不同的参数类型
  • 超类方法是私有的
  • 超类方法是包私有的,子类位于不同的包中
于 2013-08-28T10:25:44.310 回答