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?