Seltsamer Fall einer Überschreibung der statischen Methode in Java

Es wird überall geschrieben, dass statische Methoden nicht überschrieben werden können, aber wenn ich versuche, den Zugriffsspezifizierer "say" von "public" auf "protected" zu reduzieren, wird ein Fehler ausgegeben. zum Beispiel

<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>

Es sagt

Die Sichtbarkeit der geerbten Methode kann nicht verringert werden

Also Unsinn, es folgt den übergeordneten Regeln. Warum sagen wir, dass Foo in der B-Klasse nicht außer Kraft gesetzt wird? Warum sagen wir, dass es sich versteckt / beschattet und nicht überschreibt?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage