Java Reference
In-Depth Information
Overriding a Method Definition
The definition of an inherited method can be changed in the definition of a derived
class so that it has a meaning in the derived class that is different from what it is
in the base class. This is called
overriding
the definition of the inherited method.
For example, the methods
toString
and
equals
are overridden (redefined) in the
definition of the derived class
HourlyEmployee
. They are also overridden in the class
SalariedEmployee
. To override a method definition, simply give the new definition
of the method in the class definition, just as you would with a method that is added in
the derived class.
overriding
Overriding a Method Definition
A derived class inherits methods that belong to the base class. However, if a derived class
requires a different definition for an inherited method, the method may be redefined in the
derived class. This is called
overriding
the method definition.
The
final
Modifier
If you add the modifier
final
to the definition of a method, it indicates that the method
may not be redefined in a derived class. If you add the modifier
final
to the definition of a
class, it indicates that the class may not be used as a base class to derive other classes. We
will say more about the
final
modifier in Chapter 8.
Changing the Return Type of an Overridden Method
In a derived class, you can override (change) the definition of a method from the base
class. As a general rule, when overriding a method definition, you may
not
change the
type returned by the method, and you may not change a
void
method to a method
that returns a value, nor a method that returns a value to a
void
method. The one
exception to this rule is if the returned type is a class type, then you may change the
returned type to that of any descendent class of the returned type. For example, if a
function returns the type
Employee
( Display 7.2 ), when you override the function
definition in a derived class, you may change the returned type to
HourlyEmployee
( Display 7.3 ),
SalariedEmployee
(Display 7.5), or any other descendent class of
the class
Employee
. This sort of changed return type is known as a
covariant return
type
and is new in Java version 5.0; it was not allowed in earlier versions of Java.
Earlier versions of Java allowed absolutely no changes to the returned type. We will
give complete examples of changing the returned type of an overridden method in
Chapter 8 . Here we will just outline an example .
covariant
return type