Java Reference
In-Depth Information
PITFALL: The Terms
Subclass
and
Superclass
Many programmers and authors use the term
subclass
for a derived class and use
superclass
for its base class (or any of its ancestor classes). This is logical. For example,
the collection of all hourly employees in the world is a subclass of all employees.
Similarly, the collection of all objects of type
HourlyEmployee
is a subcollection
of the collection of all objects of the class
Employee
. As you add more instance
variables and methods, you restrict the number of objects that can satisfy the class
definition. Despite this logic, people often reverse the terms
subclass
and
superclass
.
Remember that these terms refer to the collections of objects of the derived class and
the base class and not to the number of instance variables or methods. A derived class
is a
subclass
(not a
superclass
) of its base class. Another way to remember which is a
superclass is to recall that the
super
constructor invocation is an invocation of the
base class and so the base class is the
superclass
.
subclass and
superclass
■
Self-Test Exercises
5. Is the following program legal? The relevant classes are defi ned in Displays 7.2 ,
7.3 , and 7.5 .
public class
EmployeeDemo
{
public static void
main(String[] args)
{
HourlyEmployee joe =
new
HourlyEmployee("Joe Young",
new
Date("February", 1, 2004), 10.50, 40);
SalariedEmployee boss =
new
SalariedEmployee("Mr. Big Shot",
new
Date("January", 1, 1999), 100000);
printName(joe);
printName(boss);
}
public void
printName(Employee object)
{
System.out.println(object.getName());
}
}
6. Give a defi nition for a class
TitledEmployee
that is a derived class of the base
class
SalariedEmployee
given in Display 7.5 . The class
TitledEmployee
has
one additional instance variable of type
String
called
title
. It also has two
additional methods:
getTitle
, which takes no arguments and returns a
String
,
and
setTitle
, which is a
void
method that takes one argument of type
String
.
It also overrides (redefi nes) the method defi nition for
getName
, so that the string
returned includes the title as well as the name of the employee.