Dziwny przypadek zastąpienia metody statycznej w java

Wszędzie napisano, że nie można przesłonić metody statycznej, ale gdy próbuję zredukować specyfikator dostępu, powiedzmy, z publicznego do chronionego, daje błąd. na przykład

<code>public class StaticOverrideFunda {

    public static void foo(){
        System.out.println("Parent Foo");
    }
}

public class B extends StaticOverrideFunda{


    protected static void foo(){
        System.out.println("Child Foo");
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        B.foo();            
    }
}
</code>

To mówi

Nie można zmniejszyć widoczności odziedziczonej metody

Więc to, że podąża za nadrzędnymi regułami, dlaczego mówimy, że foo nie jest nadpisywane w klasie B? Dlaczego mówimy, że ukrywa się / cienia i nie przesadza?

questionAnswers(2)

yourAnswerToTheQuestion