Можно ли переопределить статический метод?
Чтобы правильно ответить на данный вопрос нужно понимать, что перегрузка метода и его переопределение – это разные понятия.
Сначала рассмотрим перегрузку. Компилятор 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!"
AI-ментор знает весь ваш код
Обучающая платформа AndroidSprint
AI-ментор помнит каждую вашу задачу и весь прогресс. Даёт подсказки в контексте урока, а не общие ответы из интернета
- Контекст 24/7: ИИ видит весь ваш путь обучения и код — помогает именно с вашей задачей
- Учит думать: подсказки, а не готовые решения — развиваете навык решения проблем
- Треки: Android, Backend, QA — от нуля до Junior за 10 месяцев