Почему, если статический метод не вовлечен в полиморфизм (позднее связывание), я вижу ошибку, что статический метод не может быть переопределен

пожалуйста, рассмотрите следующий код:

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

выход:

java: m (java.lang.Number) в файле НаследованиеTest.B не может переопределить m (java.lang.Number) в объекте НаследованиеTest. Возвращаемый тип int не совместим с void

Я знаю, что статические методы не участвуют в полиморфизме, поэтому я делаю вывод, что переопределение невозможно для моего кода. Это сообщение компилятора странно для меня.

Как я понимаю, переопределение является частью полиморфизма. Я готовлюсь к scjp и боюсь ошибиться в знакомом вопросе.

Пожалуйста, уточните эту проблему.

ожидаемое для меня поведение - сообщение об ошибке перегрузки

P.S1.

Я прочитал популярный вопрос о статическом переопределении и не нашел ответа (

P.S2. По Пшемо отвечу:

этот код:

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

выходы:

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

Для меня эти ситуации одинаковы. Но ошибка компилятора другая - странная.

Ответы на вопрос(3)

Ваш ответ на вопрос