超级私人决赛可以被覆盖吗?

时间:2014-02-21 00:24:27

标签: java

  

哪三项陈述属实? (选择三项。)

     

一个。当且仅当X为X时,X类中的最终方法才是抽象的   抽象。

     

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

     

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

     

d。可以重写X类中的非静态公共final方法   X的任何子类。

     

电子。类X中的公共静态方法可以由X的子类调用   没有明确引用类X。

     

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

     

-G。 X类中的受保护方法可以被X的子类覆盖   只有当子类与X在同一个包中时才会。

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

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

请清除F点。

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

  
    

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

  

这个问题并未说明有关超越的问题。因为私有方法仅存在于该类的上下文中,所以它不参与重载。您不能覆盖私有方法,因为无论如何都不会从定义它们的类外部看到私有方法。

另一种看待的方式是它们是两种不相关的方法,它们的签名是完全相同的。

由于子类中的私有方法不会超越超类中的私有方法,因此final关键字无效。