В Java @Override - это не украшение над методом, а простая защита от глупых ошибок. Представь базовый класс: class Report { void print() { // ... } } Ты хочешь переопределить метод, но случайно пишешь prnt() вместо print(): class PDFReport extends Report { void prnt() { // ... } } Код скомпилируется. Но метод print() не переопределён. Ты просто создал новый метод с опечаткой, а старое поведение осталось на месте. А теперь добавляем @Override: class PDFReport extends Report { @Override void prnt() { // ... } } И компилятор сразу скажет: такого метода в родительском классе нет, переопределять нечего. Вот почему @Override стоит писать всегда, когда переопределяешь метод. Это маленькая аннотация, которая превращает скрытый баг в обычную ошибку компиляции.