The Shape Hierarchy Example
public abstract class Shape
{
String name;
double area;
public void display()
{
System.out.println("Object type: " + name);
System.out.println("Object area: " + area);
}
}
|
The base class of the Shape hierarchy. Every object that we want to
consider is a geometric shape. All geometric shapes have in common that they have a name
(Rectangle, Triangle, etc) and an area. Also, all geometric shapes need a method to print out information about themselves. |
public class Circle extends Shape
{
private double radius;
public Circle(double _radius)
{
name = "Circle";
radius = _radius;
}
public void computeArea()
{
area = Math.PI * radius * radius;
}
}
|
Our first example of a Shape is a Circle. Since a Circle is a Shape,
we specify that a Circle extends Shape A Circle, specifically, always must have a radius A Circle has a particular way to compute its area if the radius is known |
public class Rectangle extends Shape
{
private double height, width;
public Rectangle(double _height, double _width)
{
name = "Rectangle";
height = _height;
width = _width;
}
public void computeArea()
{
area = height * width;
}
public void display()
{
super.display();
System.out.println("Dimension: "+height+" x "+width);
}
}
|
Our second example of a Shape is a Rectangle. Since a Rectangle is a
Shape, we specify that Rectangle extends Shape A Retangle, specifically, always has a height and a width A Rectangle has a specific way to compute its area, given the height and width A Retangle does inherit the 'general' display method, but we want to print out more information. |
public class Square extends Rectangle
{
public Square(double _side)
{
super(_side, _side);
name = "Square";
}
}
|
Our last example of a Shape is a Square. A Square is a Shape, but it
is also a particular type of Rectangle. To construct a Square is really the same as constructing a Rectangle where the width and height are the same. |
public class ShapeTest
{
public static void main(String args[])
{
Rectangle r = new Rectangle(2, 4);
Square s = new Square(5);
Circle c = new Circle(1);
r.computeArea(); s.computeArea(); c.computeArea();
r.display(); s.display(); c.display();
}
}
|
Since we do want to check if everything is working, we create a test
class that should be "runnable" Then we
need to create some instances of a Rectangle, Circle, and Square |