Example 2-2 is a standalone program named RectTest that puts the Rect class of Example 2-1 through its paces. Note the use of the new keyword and the Rect( ) constructor to create new Rect objects. The program uses the . operator to invoke methods of the Rect objects and to access their fields. The test program also relies implicitly on the toString( ) method of Rect when it uses the string concatenation operator (+) to create strings to be displayed to the user.
Example 2-2. RectTest.java
package je3.classes;
/** This class demonstrates how you might use the Rect class */
public class RectTest {
public static void main(String[ ] args) {
Rect r1 = new Rect(1, 1, 4, 4); // Create Rect objects
Rect r2 = new Rect(2, 3, 5, 6);
Rect u = r1.union(r2); // Invoke Rect methods
Rect i = r2.intersection(r1);
if (u.isInside(r2.x1, r2.y1)) // Use Rect fields and invoke a method
System.out.println("(" + r2.x1 + "," + r2.y1 +
") is inside the union");
// These lines implicitly call the Rect.toString( ) method
Example 2-3 is a simple subclass of the Rect class of Example 2-1. This DrawableRect class inherits the fields and methods of Rect and adds its own method, draw( ), that draws a rectangle using a specified java.awt.Graphics object. (We’ll see more of the Graphics object in Chapter 12.) DrawableRect also defines a constructor that simply uses the super keyword to pass its arguments up to the corresponding Rect constructor. Note the use of the extends keyword to indicate that Rect is the superclass of DrawableRect.
Example 2-3. DrawableRect.java
package je3.classes;
/**
* This is a subclass of Rect that allows itself to be drawn on a screen.
* It inherits all the fields and methods of Rect
* It relies on the java.awt.Graphics object to perform the drawing.
**/
public class DrawableRect extends Rect {
/** The DrawableRect constructor just invokes the Rect( ) constructor */
public DrawableRect(int x1, int y1, int x2, int y2) { super(x1,y1,x2,y2); }
/** This is the new method defined by DrawableRect */