public class NaiveAlien extends Alien
{
@Override
public void harvest(){}
}
Я пытался понять код моего друга, и я не получаю синтаксис @Override в коде. Что это делает и почему мы нуждаемся в кодировании? Спасибо.
public class NaiveAlien extends Alien
{
@Override
public void harvest(){}
}
Я пытался понять код моего друга, и я не получаю синтаксис @Override в коде. Что это делает и почему мы нуждаемся в кодировании? Спасибо.
Это подсказка для компилятора, чтобы он знал, что вы переопределяете метод родительского класса (или интерфейса в Java 6).
Если компилятор обнаруживает, что нет функции для переопределения, он будет предупреждать вас (или ошибку).
Это чрезвычайно полезно для быстрого определения опечаток или изменений API. Предположим, вы пытаетесь переопределить метод родительского класса harvest()
, но заклинайте его harvset()
, ваша программа тихо вызовет базовый класс, и без @Override
у вас не будет никаких предупреждений об этом.
Аналогично, если вы используете библиотеку и в версии 2 библиотеки, harvest()
был изменен, чтобы принять целочисленный параметр, вы больше не сможете его переопределить. Опять же, @Override
быстро скажет вам.
Эта функция называется аннотацией. @Override
- это синтаксис использования аннотации, чтобы компилятор знал: "Эй, компилятор, я меняю то, что собирает урожай в родительском классе", тогда компилятор может сразу сказать: "Чувак, вы неправильно его именовали". Компилятор не будет компилироваться, пока вы не назовете его правильно.
Итак, без этой аннотации @Override
компилятор не будет ошибкой, и он будет считаться новым объявлением метода. Было бы трудно распознать ошибку на этом этапе.
@Override
означает, что вы переопределяете метод базового класса. В java6 это также означает, что вы реализуете метод из интерфейса. Он защищает вас от опечаток, когда вы думаете, что они переопределяют метод, но вы что-то опечалили.