Warum, wenn statische Methode nicht in Polymorphismus (späte Bindung) involviert ist, sehe ich Fehler, dass statische Methode nicht überschrieben werden kann

Bitte beachten Sie folgenden Code:

class A{
    public static void m(Number n){
         System.out.println("Number A");
    };
}
class B extends A{
     public static int m(Number n){
        System.out.println("Number B");
        return 1;
      };
}

Ausgabe:

java: m (java.lang.Number) in inheritanceTest.B kann m (java.lang.Number) in inheritanceTest.A nicht überschreiben. Der Rückgabetyp int ist nicht mit void kompatibel

Ich weiß, dass statische Methoden keinen Polymorphismus beinhalten, daher schließe ich, dass das Überschreiben für meinen Code unmöglich ist. Diese Compilermeldung ist für mich seltsam.

Soweit ich weiß, gehört das Überschreiben zum Polymorphismus. Ich bereite mich auf scjp vor und habe Angst, Fehler in vertrauter Frage zu machen.

Bitte klären Sie dieses Problem.

erwartetes Verhalten für mich - Meldung über Überladungsfehler

P.S1.

Ich habe die am häufigsten gestellte Frage zu statischem Überschreiben gelesen und keine Antwort gefunden (

P.S2. Nach Pshemo Antwort:

dieser Code:

class Foo{
    public static void m(Number n){
         System.out.println("Number A");
    };
    public static int m(Number n){
        System.out.println("Number B");
        return 1;
    };
}

Ausgänge:

error: method m(Number) is already defined in class Foo
    public static int m(Number n){
                      ^
1 error

Für mich sind diese Situationen gleich. Aber der Compilerfehler ist anders - seltsam.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage