From the Java Tutorials on annotations:
@Override
— the @Override
annotation
informs the compiler that the element
is meant to override an element
declared in a superclass (overriding
methods will be discussed in the the
lesson titled "Interfaces and
Inheritance").
// mark method as a superclass method
// that has been overridden
@Override
int overriddenMethod() { }
While it's not required to use this
annotation when overriding a method,
it helps to prevent errors. If a
method marked with @Override
fails to
correctly override a method in one of
its superclasses, the compiler
generates an error.
Let's take a look at the example given in the Java Language specifications, 9.6.1.4 Override. Let's say you want to override a method, equals
in that case, but you wrote:
public boolean equals(Foo that) { ... }
instead of:
public boolean equals(Object that) { ... }
While this code is legal, annotating the equals
method declaration with @Override
would trigger a compile time error because you're in fact not overriding it, you're overloading it. This can cause nasty bugs and the Override
annotation type helps at detecting them early.