2.4 Another Subclass
Example 2-4 shows another subclass.
ColoredRect is a subclass of
DrawableRect (see Example 2-3),
which makes it a sub-subclass of Rect (see Example 2-1). This class inherits the fields and methods
of DrawableRect and of Rect
(and of Object, which is the implicit superclass
of Rect). ColoredRect adds two
new fields that specify the border color and fill color of the
rectangle when it is drawn. (These fields are of type
java.awt.Color, which we'll learn
about in Chapter 12.) The class also defines a new
constructor that allows these fields to be initialized. Finally,
ColoredRect overrides the draw(
) method of the DrawableRect class. The
draw( ) method defined by
ColoredRect draws a rectangle using the specified
colors, rather than simply using the default colors as the method in
DrawableRect did.
Example 2-4. ColoredRect.java
package je3.classes;
import java.awt.*;
/**
* This class subclasses DrawableRect and adds colors to the rectangle it draws
**/
public class ColoredRect extends DrawableRect {
// These are new fields defined by this class.
// x1, y1, x2, and y2 are inherited from our super-superclass, Rect.
protected Color border, fill;
/**
* This constructor uses super( ) to invoke the superclass constructor, and
* also does some initialization of its own.
**/
public ColoredRect(int x1, int y1, int x2, int y2,
Color border, Color fill)
{
super(x1, y1, x2, y2);
this.border = border;
this.fill = fill;
}
/**
* This method overrides the draw( ) method of our superclass so that it
* can make use of the colors that have been specified.
**/
public void draw(Graphics g) {
g.setColor(fill);
g.fillRect(x1, y1, (x2-x1), (y2-y1));
g.setColor(border);
g.drawRect(x1, y1, (x2-x1), (y2-y1));
}
}
|