Переопределение методов в Java. Использование @Override аннотации

Переопределение методов в Java. Использование @Override аннотации

Java Аннотации были введены в Java версии 1.5 и на данный момент аннотация @Override представляет собой одну из встроенных Java-аннотаций. Когда мы применяем эту аннотацию к методу, то это сообщает компилятору, что мы пытаемся переопределить метод суперкласса. 

Давайте посмотрим простой пример переопределения метода в Java.

MainClass.java

Теперь давайте создадим подкласс и переопределеним метод doSomething(String str) класса MainClass.

ChildClass.java

Обратите внимание, что на примере выше @Override аннотация закомментирована.

Теперь давайте создадим тестовый класс, чтобы проверить переопределение в работе.

OverrideTest.java

Результат выполнения программы:

Здесь объект mc имеет тип MainClass, но во время выполнения это объект класса ChildClass, поэтому, когда мы вызываем метод doSomething(String str), Java ищет реализацию в ChildClass и выводит её на экран.

Теперь давайте изменим метод doSomething(String str) класса MainClass, как показано ниже:

В данном случае компилятор не выдаст никаких предупреждений или ошибок. Результатом выполнения этой программы будет:

Причина в том, что метод MainClass doSomething(Object str) больше не переопределяется классом ChildClass и, следовательно, идет вызов реализации MainClass.

Если вы раскомментировать аннотацию @Override в ChildClass, то получите следующее сообщение об ошибке компиляции:

Лучше решать такие проблемы во время компиляции, а не во время работы программы. Поэтому всегда используйте аннотацию @Override, когда вы пытаетесь переопределить метода суперкласса.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *