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 |