Java Reference
In-Depth Information
Introducing Construction (Chapter 14)
SOLUTION 14.1
Special rules regarding constructors include the following.
You must use new to invoke a constructor.
Constructor names must match the class name. This results in the oddity that, unlike
most methods, constructor names normally begin with an uppercase letter.
If you do not supply a constructor for a class, Java will provide a default.
You can invoke other constructors with this() and super() so long as this
invocation is the first statement in a constructor.
There are also several rules governing the order of field initialization and special rules for
the instantiation of arrays.
SOLUTION 14.2
A constructor that allows Fountain to compile is:
public Fountain(String name)
{
super(name);
}
This constructor allows the Fountain class to compile, as it invokes the superclass's
constructor in its first statement. We have also corrected an important inconsistency in our
classes. By introducing a Firework constructor that accepts a name, we established that all
Firework objects must have a name. Logically, all fountains are fireworks, and all
Fountain objects must have a name if all Firework objects have a name. The constructor
in this solution respects the design of its superclass, accepting a name and passing it up so that
the superclass can uniformly apply it.
SOLUTION 14.3
One way to provide default values for an object's attributes is to provide a constructor that
omits the attribute. That constructor can fill in the default value, passing control to another
constructor with this() :
public Firework(String name)
{
this(name, DISPLAY);
}
public Firework(String name, Classification classification)
{
this.name = name;
this.classification = classification;
}
Search WWH ::




Custom Search