Что такое @Override для Java? [дубликат]
Возможные Дубликаты:
когда вы используете аннотацию @Override Java и почему?
есть ли причина аннотировать метод с помощью @Override
кроме того, чтобы компилятор проверил, что суперкласс имеет этот метод?
4 ответа:
как вы описываете, @Override создает проверку времени компиляции, что метод переопределяется. Это очень полезно, чтобы убедиться, что у вас нет глупый вопрос подписи при попытке переопределить.
например, я видел следующую ошибку:
public class Foo { private String id; public boolean equals(Foo f) { return id.equals(f.id);} }
этот класс компилируется как написано, но добавление тега @Override в метод equals приведет к ошибке компиляции, поскольку он не переопределяет метод equals на объекте. Это простая ошибка, но она может убежать глаз даже опытного разработчика
Это не только делает проверку компилятора - хотя этого было бы достаточно, чтобы сделать его полезным; он также документирует намерение разработчика.
нет, вы в значительной степени прибил его.
@Override
сообщает компилятору свой намерение: если вы помечаете метод@Override
, вы намеревались переопределить что-то из суперкласса (или интерфейса, в Java 6). Хорошая IDE поможет пометить любой метод, который переопределяет метод без@Override
, Так что сочетание этих двух поможет гарантировать, что вы делаете то, что вы пытаетесь.