Remember styles of inheritance

A class has supertypes: the class it extends, plus any interfaces it implements. A supertype can have 3 different policies for how the implementation of a method is treated:

A class can take these general policies with respect to overriding, in order of increasing liberality:

See Also :
Use final liberally
Designing for subclassing
Overridable methods need special care