Пример работы с аннотацией Override в языке Java
Задача программы вывод голосов разных существ. Мы будем работать с 3 видами: это собака, кошка и рыба. Предположим, что мы пишем некое игровое приложение и нам необходимо выводить звуки разных животных но, среди животных есть те, которые не произносят явных звуков, но они входят в общий класс Pet и используют общий метод Voice. Для того, чтобы персонализировать метод Voice для определенного суб класса (Fish) мы будем использовать аннотацию Override.
public class Pet{ //Общий класс, объединяющий всех животных public void Voice(String sayit){ System.out.println(sayit); } } public class Cat extends Pet{ //Кошкин класс } public class Dog extends Pet{ //Собчкин класс } public class Fish extends Pet{ //В несколько строк кода мы решили проблему разговоров рыб в нашей программе. @Override public void Voice(String sayit){ System.out.println("Рыбы не разговаривают"); } } public class PetVoices extends Application { @Override public void start(Stage stage) throws Exception { Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml")); Scene scene = new Scene(root); stage.setScene(scene); stage.show(); Dog javaTuzik = new Dog(); javaTuzik.Voice("Gav-gav-gav"); Cat javaBarsik = new Cat(); javaBarsik.Voice("Meu-meu-meu"); Fish javaFish = new Fish(); javaFish.Voice("Bul-bul-bul"); } /** * @param args the command line arguments */ public static void main(String[] args) { launch(args); } }
Вывод работы программы:
Gav-gav-gav
Meu-meu-meu
Рыбы не разговаривают
Справка по аннотации: @Override — проверяет, переопределен ли метод. Вызывает предупреждение компиляции, если метод не найден в родительском классе;
Явно указывать переопределен метод или нет - не обязательно, т.е. если мы напишем класс Fish без аннотации Override, то он будет функционировать, как и прежде. Но для себя лично лучше указывать, что мы переопределили метод.
Такая запись без аннотации правильная:
class Fish extends Pet{
public void Voice(String sayit){
System.out.println("Рыбы не разговаривают");
}
public void Voice(String sayit){
System.out.println("Рыбы не разговаривают");
}
Согласно c Wikipedia: Аннотированы могут быть пакеты, классы, методы, переменные и параметры. В общем виде выглядит как @ + имя аннотации, написанное перед именем переменной, параметра, метода, класса, пакета, либо перед их модификаторами.
Итог: Использование аннотации override может быть очень полезно во многих случаях. Я думаю Вы уже заметили, что данный вид аннотаций используется довольно часто.
Потенциал использования override очень высок, с его помощью мы можем избежать массы проблем и огромного количества лишнего кода в наших программах.
Еще немного про явно и не явное определение: отсутствие явного определения аннотации для компилятора не вызовет никаких ошибок. Главное, чтобы в родительском классе Pet метод Voice был определен, т.е. переопределить можно только то, что уже существует.
Например, IDE NetBeans советует нам указать, что метод переопределен и я с ним солидарен.
От автора: к сожалению, понятных примеров использования аннотаций на просторах сети очень мало, если не сказать больше. Для понимания программирования в целом и программирования в частности на Java нужно понимание аннотаций. К конкретному предмету блога понимание использования аннотаций не относится, но я постараюсь публиковать понятные примеры и на такие явления тоже, для общего развития.
Если Вам все же непонятно использование аннотации override, попробует перечитать статью и поиграть с кодом написанным в статье.
P.S. Я постараюсь еще дополнить статью: дополнительными примерами и размышлениями о потенциале использования данной аннотации в языке Java.
Если Вам все же непонятно использование аннотации override, попробует перечитать статью и поиграть с кодом написанным в статье.
P.S. Я постараюсь еще дополнить статью: дополнительными примерами и размышлениями о потенциале использования данной аннотации в языке Java.
0 коммент.:
Отправить комментарий