Firsly @Override - это не метод, который называется аннотацией
Теперь
Предположим, что вы расширяете класс, но вас не устраивает какой-то метод в родительском классе вашего класса. Вы хотите, чтобы они сделали что-то еще. Затем вы переопределяете этот метод в своем классе.
Например, у вашего суперкласса есть метод, подобный следующему
public void print(){
System.out.println("Hi");
}
Но когда вы вызываете этот метод, вы хотите, чтобы он напечатал «Hello», затем в подклассе вы делаете что-то вроде ниже
public void print(){
System.out.prinlnt("Hello");
}
Компилятор обнаруживает, что у вас есть метод с такой же сигнатурой, что и у вашего родительского класса, это означает, что вы хотите переопределить метод родительского класса и запустить собственную реализацию.
Даже если вы не используете аннотацию @Override, вы все равно переопределяете этот метод
, поэтому вопрос в том, что такое использование @Override?
Он в основном служит 3 целям
- Предположим, что вы переопределяете без @Override и по ошибке вы определяете print () как printt () по ошибке, вы думаете, что переопределяете print, но из-за этой опечатки printt () теперь является отдельным методом , теперь вы вызываете print () и думаете, что будет вызвана ваша print (), но у вас нет метода print () для вызова родительского print (), это не rror, и вы будете думать, почему ваш print () не вызывается.
, поэтому использование @Override предотвращает любую опечатку в имени метода. теперь, если вы делаете
@Override
public void printt() // that is actually an error, without @Override it's not
Во-вторых, например, вы не знаете, что у вашего суперкласса есть print (int i), который печатает метод квадрата i, и вы определяете метод print () в своем классе, теперь вы или ваш пользователь по ошибке вызывает print (int i), затем вызывается родительская версия, и вы будете думать, что я никогда не определял функцию, которая печатает квадрат числа, и откуда он берется.
@ Override также не позволит вам вносить какие-либо изменения в сигнатуру метода, которую вы хотите переопределить, а также означает, что вы знаете, что у вашего родителя есть метод print (), который вы хотите переопределить.
Третий -
читаемость , если кто-то еще прочитает ваше определение класса, он увидит, что метод, аннотированный @Override, также находится в parent, и это переопределенная версия.
Спасибо