Java Reference
In-Depth Information
4.1.1
Inheriting and overriding
A subclass inherits all the components of the superclass. This means that each
instance of the subclass contains all the instance components of the superclass.
The folder in Fig. 4.2 makes this clear.
Suppose a variable b contains the name a7 of the folder in Fig. 4.2 (later, we
see how to create the folder and store its name in b ). Then, method getName in
the folder can be called using the expression
Activity
4-2.2
b.getName()
This expression evaluates to the string "Gries" . This expression calls an inher-
ited method. In the same way, method getBonus in the folder can be called using
b.getBonus()
There are two instance functions getCompensation in folder a7 . Which one
does the expression
b.getCompensation()
call? It calls the method that is declared in subclass Executive. We say that
method getCompensation in class Executive overrides the inherited method.
Comparing the two methods, we can see that this makes sense. Since the
/** An executive: an employee with a bonus. */
public class Executive extends Employee {
/** Yearly bonus */
private double bonus;
/** Constructor: a person with name n , year hired d , salary 50,000 , and bonus b */
public Executive(String n, int d, double b) {
super (n, d);
bonus= b;
}
/** = this executive's bonus */
public double getBonus()
{ return bonus; }
/** = this executive's yearly compensation */
public double getCompensation()
{ return super .getCompensation() + bonus; }
/** = a representation of this executive */
public String toString()
{ return super .toString() + ", bonus " + bonus; }
}
Figure 4.1:
Subclass Executive
Search WWH ::




Custom Search