Por que, se o método estático não envolve polimorfismo (ligação tardia), vejo erro de que o método estático não pode ser substituído

considere o seguinte código:

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

resultado:

java: m (java.lang.Number) em herditanceTest.B não pode substituir m (java.lang.Number) em herditanceTest.O tipo de retorno int não é compatível com void

Eu sei que métodos estáticos não envolvem polimorfismo, portanto, deduzo que a substituição é impossível para o meu código. Essa mensagem do compilador é estranha para mim.

Pelo que entendi, a substituição faz parte do polimorfismo. Eu me preparo para o scjp e tenho medo de cometer erros em questões familiares.

Esclareça este problema.

comportamento esperado para mim - mensagem sobre erro de sobrecarga

P.S1.

Eu li a principal pergunta popular sobre a substituição estática e não encontrei a resposta (

P.S2. De acordo com a resposta de Pshemo:

este código:

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

saídas:

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

Para mim, essas situações são as mesmas. Mas o erro do compilador é diferente - estranho.

questionAnswers(3)

yourAnswerToTheQuestion