Аннотация @Override в Java
Аннотация @Override — это стандартная аннотация Java, впервые представленная в Java 1.5. Аннотация @Override означает, что метод дочернего класса переопределяет метод базового класса.
По двум причинам аннотация @Override полезна.
- Если аннотированный метод фактически ничего не переопределяет, компилятор выдает предупреждение.
- Это может помочь сделать исходный код более читабельным.
Почему мы используем аннотацию @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: Использование абстрактного класса