Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

@Override

Помечает метод, который переопределяет метод родителя или интерфейса. Компилятор проверяет, что это действительно так.

Доступно с: Java 5

Синтаксис

@Target(METHOD) @Retention(SOURCE) public @interface Override

Примеры

Переопределение метода родителя:

class Animal {
    String sound() {
        return "...";
    }
}
 
class Cat extends Animal {
    @Override
    String sound() {
        return "Meow";
    }
}
 
void main() {
    Animal pet = new Cat();
    IO.println(pet.sound());
}

Результат:

Meow

Опечатка в имени: без аннотации появился бы новый метод, а с ней — ошибка компиляции:

class Animal {
    String sound() {
        return "...";
    }
}
 
class Cat extends Animal {
    @Override
    String sond() {
        return "Meow";
    }
}
 
void main() {
    IO.println(new Cat().sound());
}

Результат:

Main.java:8: error: method does not override or implement a method from a supertype

Примечания

Аннотация необязательна, но её ставят всегда: она защищает от опечаток и от неверной сигнатуры. Классическая ошибка — equals(Cat other) вместо equals(Object other): это перегрузка, а не переопределение, и @Override сразу её поймает. Аннотация работает и для методов интерфейсов, и для toString(), hashCode() из Object. В скомпилированный класс она не попадает.

См. также

  • extends — Объявляет наследование: класс получает поля и методы родителя.
  • implements — Указывает интерфейсы, которые реализует класс.
  • Object.toString() — Возвращает текстовое представление объекта; вызывается при выводе и сложении со строкой.
  • Object.equals() — Сравнивает объекты по смыслу. По умолчанию работает как ==, поэтому в своих классах его переопределяют.

В учебнике

  • Аннотации — Аннотации в Java — @Override, @Deprecated, @FunctionalInterface, @SuppressWarnings, объявление своей аннотации, @Retention, @Target и чтение аннотаций во время работы программы.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.