// Fig. 7.4: Test.java
// Casting superclass references to subclass references
import java.awt.Graphics;
import java.applet.Applet;
public class Test extends Applet {
private Point pointRef, p;
private Circle circleRef, c;
public void init()
{
p = new Point( 3.5, 5.3 );
c = new Circle( 2.7, 1.2, 8.9 );
}
public void paint( Graphics g )
{
g.drawString( "Point p: " + p.toString(), 25, 25 );
g.drawString( "Circle c: " + c.toString(), 25, 40 );
// Attempt to treat a Circle as a Point
pointRef = c; // assign Circle to pointRef
g.drawString( "Circle c (via pointRef): " +
pointRef.toString(), 25, 70 );
// Treat a Circle as a Circle (with some casting)
pointRef = c; // assign Circle to pointRef
circleRef = (Circle) pointRef; // cast super to sub
g.drawString( "Circle c (via circleRef): " +
circleRef.toString(), 25, 100);
g.drawString( "Area of c (via circleRef): " +
circleRef.area(), 25, 115 );
// Attempt to refer to Point object
// with Circle reference
circleRef = (Circle) p;
}
}