Чтобы правильно ответить на данный вопрос нужно понимать, что перегрузка метода и его переопределение – это разные понятия.
Сначала рассмотрим перегрузку. Компилятор Java рассматривает методы с отличающимися параметрами как разные, поэтому не существует никаких ограничений.
Статические методы действуют на весь класс, а не к его экземплярам, здесь применяется статическое связывание, а значит, переопределить данный метод в дочернем классе невозможно.
Однако в дочернем классе не запрещено объявлять static-метод с теми же параметрами. Такая конструкция в Java называется перекрытие. В этом методе запрещено указывать слово super и аннотацию @Override.
class Base {
static void prntMe() {
System.out.prntln("Base!");
}
}
class Child extends Base {
static vod printMe() {
System.out.prntln("Child!");
}
}
Base instance = new Child();
instance.printMe(); // Хоть объект и Child, напечатается "Base!"