Start New Discussion within our Software Development Community

Hi

Below is a code sample i copied from the book that i am reading.But i need explanation on why creating a reference to the figure(Eg: Figure figref;) when each reference for the individual class is already been declared.
Like if i need the area of the rectangle,i could have just used r.area(),since the reference to class rectangle is already being made.

Thanks

class Figure 
{
   double dim1;
   double dim2;
   Figure(double a, double b)    
   {
      dim1 = a;
      dim2 = b;
   }
   double area() 
   {
      System.out.println("Area for Figure is undefined.");
      return 0;
   }
}
class Rectangle extends Figure 
{
   Rectangle(double a, double b) 
   {
      super(a, b);
   }
   // override area for rectangle
   double area() 
   {
      System.out.println("Inside Area for Rectangle.");
      return dim1 * dim2;
   }
}
class Triangle extends Figure 
{
   Triangle(double a, double b) 
   {
      super(a, b);
   }
   // override area for right triangle
   double area() 
   {
      System.out.println("Inside Area for Triangle.");
      return dim1 * dim2 / 2;
   }
}
class FindAreas 
{
   public static void main(String args[]) 
   {
      Figure f = new Figure(10, 10);
      Rectangle r = new Rectangle(9, 5);
      Triangle t = new Triangle(10, 8);
     // Figure figref;
      //figref = r;
      System.out.println("Area is " + r.area());
      //figref = t;
      System.out.println("Area is " + t.area());
     // figref = f;
      System.out.println("Area is " + f.area());
   }
}

your question is more about inheritance then overriding, but anyway.
why might you want to instantiate Figure?
well, maybe not at all. or, you want to create an instance of a Figure that is neither a Triangle, nor a Rectangle.

Figure circle = new Figure();

for instance.

This article has been dead for over six months. Start a new discussion instead.