Аннотация @Override в Java

Опубликовано: 13 Сентября, 2022

Аннотация @Override — это стандартная аннотация Java, впервые представленная в Java 1.5. Аннотация @Override означает, что метод дочернего класса переопределяет метод базового класса.

По двум причинам аннотация @Override полезна.

  1. Если аннотированный метод фактически ничего не переопределяет, компилятор выдает предупреждение.
  2. Это может помочь сделать исходный код более читабельным.

Почему мы используем аннотацию @Override:

Из-за следующих двух преимуществ использование аннотации @Override при переопределении метода считается лучшей практикой для написания кода на Java:

1) Вы получите ошибку времени компиляции, если программист допустит ошибку при переопределении, например, используя неправильное имя метода или типы параметров. Потому что вы сообщаете компилятору, что вы переопределяете этот метод, используя эту аннотацию. Если вы не используете аннотацию, метод подкласса будет рассматриваться как новый метод в подклассе (а не переопределяющий метод).

2) Улучшает читаемость кода. Если вы измените сигнатуру переопределенного метода, все переопределяющие его подклассы вызовут ошибку компиляции, что в конечном итоге приведет к изменению сигнатуры в подклассах. Если в вашем приложении имеется большое количество классов, эта аннотация очень поможет вам определить классы, которые необходимо изменить при изменении сигнатуры метода.

Синтаксис:

public @interface Override

Пример 1: Без использования абстрактного класса

Java




// Java Program Illustrating Override Annotation
 
// Importing input output classes
import java.io.*;
 
// Class 1
// Parent class
class ParentClass {
 
    // Method inside parent class
    public void display()
    {
 
        // Print statement whenever
        // method of parent class is called
        System.out.println("We are in base class method");
    }
}
 
// Class 2
// Child class
class ChildClass extends ParentClass {
 
    // @Override
    // Method inside child class
    public void display()
    {
 
        // Print statement whenever
        // method of child class is called
        System.out.println("We are in child class method");
    }
}
 
// Clas 3
// OverrideAnnotationTest
public class GFG {
 
    // Main driver method
    public static void main(String args[])
    {
 
        // Display message only
        System.out.println(
            "Example of @Override annotation");
 
        // Creating an object of parent class
        // with reference t ochild class
        ParentClass obj = new ChildClass();
 
        // Calling the method to execute inside classes
        obj.display();
    }
}

Выход:

Пример 2: Использование абстрактного класса