Java polymorphism and its sorts



I’ve created an software that demonstrates subtype polymorphism by way of upcasting and late binding. This software consists of Form, Circle, Rectangle, and Shapes courses, the place every class is saved in its personal supply file. Itemizing 1 presents the primary three courses.

Itemizing 1. Declaring a hierarchy of shapes

class Form
{
   void draw()
   {
   }
}

class Circle extends Form
{
   personal int x, y, r;

   Circle(int x, int y, int r)
   {
      this.x = x;
      this.y = y;
      this.r = r;
   }

   // For brevity, I've omitted getX(), getY(), and getRadius() strategies.

   @Override
   void draw()
   {
      System.out.println("Drawing circle (" + x + ", "+ y + ", " + r + ")");
   }
}

class Rectangle extends Form
{
   personal int x, y, w, h;

   Rectangle(int x, int y, int w, int h)
   {
      this.x = x;
      this.y = y;
      this.w = w;
      this.h = h;
   }

   // For brevity, I've omitted getX(), getY(), getWidth(), and getHeight()
   // strategies.

   @Override
   void draw()
   {
      System.out.println("Drawing rectangle (" + x + ", "+ y + ", " + w + "," +
                         h + ")");
   }
}

Itemizing 2 presents the Shapes software class whose important() methodology drives the appliance.

Itemizing 2. Upcasting and late binding in subtype polymorphism

class Shapes
{
   public static void important(String[] args)
   {
      Form[] shapes = { new Circle(10, 20, 30),
                         new Rectangle(20, 30, 40, 50) };
      for (int i = 0; i < shapes.size; i++)
         shapes[i].draw();
   }
}

The declaration of the shapes array demonstrates upcasting. The Circle and Rectangle references are saved in shapes[0] and shapes[1] and are upcast to kind Form. Every of shapes[0] and shapes[1] is considered a Form occasion: shapes[0] isn’t considered a Circle; shapes[1] isn’t considered a Rectangle.

Related Articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Latest Articles