Ваше понимание неверно.
Во-первых: это @Override
.Ява чувствительна к регистру, так что да, различие важно.Во-вторых:
Я узнал, что он переопределяет родительский метод.
Нет.Это просто отмечает тот факт, что метод, к которому он применяется, делает.То, что вы ударили @Overrides
по методу, волшебным образом не заставляет его переопределять что-либо.Это вызовет исключения, если этого не произойдет.
Что касается проверки на орфографию: допустим, вы хотите переопределить метод toString()
.
@Override
public String toString() {
return "myString";
}
будет успешным, потому что toStringсуществует так же в родительском классе (Object).
Однако при попытке:
@Override
public String toSttring() {
return "one t too many";
}
он будет искать в родительских классах и реализованных интерфейсах.Если он нигде не может найти сигнатуру этого метода, он выдаст исключение.Видя, что это, скорее всего, должно было быть toString()
вместо toSttring()
, это одна проверка.
Однако, это не просто проверка правописания.Он в основном проверяет сигнатуру метода (которая включает имя метода).
Если вы попытаетесь:
@Override
public Double toString() {
return new Double("5");
}
Если вы не добавили этот метод самостоятельно в родительский класс вашего класса, этопотерпит неудачу, так как Objects toString возвращает String.
Так же, как:
@Override
public String toString(String value) {
return value;
}
, вероятно, потерпит неудачу по тем же причинам.
EDIT: просто для пояснения: @Override
не проверяет орфографию.Если вы неправильно написали имя метода в родительском классе, оно не будет работать, если вы правильно произнесете его в дочернем классе и добавите аннотацию Override.