Что такое переопределение (override) метода?
Этот вопрос объясняет механизм замены реализации метода в подклассе для изменения его поведения.
Короткий ответ
Переопределение — это предоставление новой реализации метода в подклассе, который уже определен в родительском классе. Оно используется для создания специализированного поведения в подклассе.
Длинный ответ
Переопределение позволяет подклассу изменить реализацию метода, определенного в суперклассе, сохраняя его сигнатуру (имя, параметры и возвращаемый тип).
Ключевые моменты:
- Метод должен иметь ту же сигнатуру (имя, параметры, возвращаемый тип).
- Переопределенный метод не может быть менее доступным, чем в суперклассе.
- Использование аннотации @Override помогает избежать ошибок.
Пример:
class Animal {
void sound() {
System.out.println("Animal makes a sound");
}
}
class Cat extends Animal {
@Override
void sound() {
System.out.println("Cat meows");
}
}
public class Main {
public static void main(String[] args) {
Animal animal = new Cat();
animal.sound(); // Вывод: Cat meows
}
}
Когда использовать:
- Переопределение полезно, когда нужно изменить или уточнить поведение метода в подклассе.
Переопределение обеспечивает динамический полиморфизм, позволяя объектам вести себя по-разному в зависимости от их типа.