Нам действительно нужно @Override и т.д. Когда код Java?

Возможный дубликат:
Когда вы используете аннотацию @Override Java и почему?

Интересно, какие функции добавления @Override перед кодом, который мы хотели бы переопределить. Я сделал с ним и без него, и казалось, что все идет хорошо (по крайней мере, для меня).

Ответы

Ответ 1

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

Ответ 2

какие функции добавления @Override

Это позволяет компилятору дважды проверять вас, когда вы говорите (аннотируя), что указанный метод должен переопределять метод суперкласса (или реализовать метод интерфейса в Java 6 или новее). Если этот метод фактически не переопределяет метод суперкласса (или реализует метод интерфейса), компилятор будет отмечать это как ошибку. Это часто указывает на то, что у вас есть опечатка в имени метода или ошибка в сигнатуре метода.

Нам действительно нужно @Override

Нужно? Абсолютно нет, но его такой дешевый способ

  • явно передает человеческому читателю, что это переопределяющий метод, и
  • ловит ошибку во время компиляции, которая может занять, по крайней мере, несколько циклов мозга, чтобы поймать во время выполнения , когда вы даже знаете, что искать его

... и даже дешевле, когда ваша IDE помогает вам включить его...

Ответ 4

Рекомендуется, поскольку это помогает управлять консистенцией. Представьте, что кто-то изменит имя метода суперкласса (и только там, не выполняя изменения имен в классах в зависимости от того, что довольно гипотетично:)), то вы будете первым, кто узнает из-за ошибок компиляции.

Ответ 5

Это помогло мне пару раз, чтобы избежать орфографических ошибок/различий в именах методов. Без него это один из этих раздражающих ошибок, которые могут занять возраст, чтобы отследить.

Он не добавляет каких-либо функциональных различий, но говорит компилятору, что, по-вашему, вы переопределяете метод, чтобы он мог жаловаться, если вы не очень полезны, когда вы что-то прикрутили!

Ответ 6

Настоятельно рекомендуется использовать его, поскольку он увеличивает недопустимость кода ur и помогает другим поддерживать код ur также.

Ответ 7

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

Class A { 
    methodName() { System.out.println ("A"); }
}

class B extends A { 
    methodName() { System.out.println ("B"); }
}

Во время выполнения вы, вероятно, будете называть B.methodName() - это не имеет значения для B, то ли B.methodName() переопределяет одно и то же имя класса A(). Для класса B не имеет значения, имеет ли суперкласс (A) методName(). Я имею в виду, что наследование - улица с односторонним движением - вы не можете наследовать что-то с помощью @override - все, что может проверить компилятор, - это если есть метод с той же подписью в суперклассе, который не будет использоваться в любом случае.

Для других ответов, если кто-то редактирует A.java для удаления или переименования методаName() или изменения его подписи, вы все равно можете вызвать B.methodName() без проблем, но только если вы не используете этот @override. Я думаю, что это также почему не часть языка Java.

Ответ 8

НЕТ!

Если вы сочтете это полезным, вам нужна настоящая среда IDE или научиться ее использовать.