超类中的私有final可以被覆盖吗?

use*_*842 3 java

哪三个陈述是正确的?(选择三项。)

A. 当且仅当 X 是抽象的时,类 X 中的最终方法才可以是抽象的。

B. 类 X 中的受保护方法可以被 X 的任何子类覆盖。

C. 私有静态方法只能在类 X 中的其他静态方法中调用。

D. 类 X 中的非静态公共最终方法可以在 X 的任何子类中重写。

E. 类 X 中的公共静态方法可以由 X 的子类调用,而无需显式引用类 X。

F. 与类 X 中的私有最终方法具有相同签名的方法可以在 X 的子类中实现。

G. 仅当子类与 X 位于同一包中时,类 X 中的受保护方法才能被 X 的子类覆盖。

这个问题来自 SCJP。答案是BEF

我理解 BE,但 F 说该方法是“私有最终”,那么子类如何覆盖该方法,因为它定义为最终和私有方法。

请清除F点。

chr*_*ke- 5

答案 F 不是覆盖的示例,而是方法范围的示例。在类中声明的方法private对该类的子类不可见,因此不存在重叠;子类在超类中看不到它可以重写的方法。子类有自己的方法void foo(int),完全不知道超类的方法private void foo(int)

  • 这不是“范围”,而是“可见性”。“范围”由“{}”确定。 (3认同)