Можно ли переопределить статический метод?
Чтобы правильно ответить на данный вопрос нужно понимать, что перегрузка метода и его переопределение – это разные понятия.
Сначала рассмотрим перегрузку. Компилятор 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!"
Peer-to-peer собеседования
AI Sprints — обучение профессиям с ИИ
Практика собеседований с менторами и другими студентами. Реальные вопросы по Kotlin, Android и Backend
- Живые собеседования: практикуйте интервью с менторами и коллегами-студентами
- Реальные вопросы: база вопросов по Kotlin, Android, Backend и QA
- Фидбек: обратная связь после каждого собеседования — знаете, что улучшить
AI Challenge — собери чат-бота за 5 дней
Бесплатный марафон по AI-инжинирингу. Cursor + OpenAI, 60 минут в день — без опыта в программировании. К пятнице у вас будет рабочий чат-бот с памятью в браузере.
- Практика с первого дня, без теории «в стол»
- Готовый проект в портфолио к концу недели
- Старт в любой день — учитесь в своём темпе