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
@Override
означає, що ви перевизначаєте метод базового класу. У java6 це також означає, що ви реалізуєте метод з інтерфейсу. Він захищає вас від помилок, коли ви думаєте, що перевизначаєте метод, але ви щось ввели неправильно.