На мой взгляд, @Override
имеет смысл для методов, которые переопределяют методы, а не реализуют методы.
Итак, если у вас есть интерфейс:
public interface MyInterface {
public void doSomething();
}
Класс, который реализует , интерфейс которого находится ниже (MyClassA
):
public MyClassA implements MyInterface {
public void doSomething() {
System.out.println("This is from MyClassA");
}
}
Затем приведенный ниже класс расширяет MyClassA
и переопределяет doSomething
, и тогда я бы добавил аннотацию @Override
.
public MyClassB extends MyClassA implements MyInterface {
@Override
public void doSomething() {
System.out.println("This is from MyClassB");
}
}
Я бы не стал делать следующее (независимо от того, допустимо ли это) в любом случае, так как это нарушает идею переопределения чего-либо - вы реализуете, а не перезаписываете интерфейс:
public MyClassA implements MyInterface {
@Override
public void doSomething() {
System.out.println("This is from MyClassA");
}
}