Java Reference
In-Depth Information
following definition of the no-argument constructor for the class
HourlyEmployee
(with
super
omitted) is equivalent to the version we gave in Display 7.3:
public
HourlyEmployee()
{
wageRate = 0;
hours = 0;
}
A derived class object has all the instance variables of the base class. These inherited
instance variables should be initialized, and the base class constructor is the most
convenient place to initialize these inherited instance variables. That is why you should
always include a call to one of the base class constructors when you define a constructor
for a derived class. As already noted, if you do not include a call to a base class constructor
(using
super
), then the no-argument constructor of the base class is called automatically.
(If there is no no-argument constructor for the base class, that is an error condition.)
Call to a Base Class Constructor
Within the definition of a constructor for a class, you can use
super
as a name for a constructor
of the base class. Any invocation of
super
must be the first action taken by the constructor.
EXAMPLE
public
SalariedEmployee(SalariedEmployee originalObject)
{
super
(originalObject);
//Invocation of base class
//constructor.
salary = originalObject.salary;
}
The
this
Constructor
When defining a constructor, it is sometimes convenient to be able to call one of the
other constructors in the same class. You can use the keyword
this
as a method name
to invoke a constructor in the same class. This use of
this
is similar to the use of
super
,
but with
this
, the call is to a constructor of the same class, not to a constructor for the
base class. For example, consider the following alternate, and equivalent, definition of
the no-argument constructor for the class
HourlyEmployee
(from Display 7.3 ):
this
public
HourlyEmployee()
{
this
("No name",
new
Date("January", 1, 1000), 0, 0);
}