Ask Question

Name:
Title:
Your Question:

Answer Question

Name:
Your Answer:
User Submitted Source Code!


Description:
  POLY
Language: C/C++
Code:
package com.javacodegeeks.snippets.core;
      
     import java.util.Random;
 
     class Shape {
      
         void drawShape() {
         }
      
         void eraseShape() {
         }
     }
      
     class Circle extends Shape {
      
         @Override
         void drawShape() {
      
       System.out.println("Circle.draw()");
         }
      
         @Override
         void eraseShape() {
      
       System.out.println("Circle.erase()");
         }
     }
      
     class Square extends Shape {
      
         @Override
         void drawShape() {
      
       System.out.println("Square.draw()");
         }
      
         @Override
         void eraseShape() {
      
       System.out.println("Square.erase()");
         }
     }
      
     class Triangle extends Shape {
      
         @Override
         void drawShape() {
      
       System.out.println("Triangle.draw()");
         }
      
         @Override
         void eraseShape() {
      
       System.out.println("Triangle.erase()");
         }
     }
      
     // A "factory" that randomly creates shapes:
class RandomShapeGenerator {
      
         private Random rand = new Random();
           
    //Choose randomly a circle, a squere or a triangle
    public Shape next() {
      
       switch (rand.nextInt(3)) {
      
      
     default:

      
    case 0:
         return new Circle();
      
      
     case 1:
      
      
         return new Square();
      
      
     case 2:
      
      
         return new Triangle();
      
       }
         }
     }
      
     public class Polymorphism {
         
         private static RandomShapeGenerator gen = new RandomShapeGenerator();
      
    public static void main(String[] args) {
      
        
      
       //This is an array of references of the superclass Shape
      
       Shape[] s = new Shape[9];
      
        
      
       // Fill up the array with random shapes shapes:
      
       for (int i = 0; i < s.length; i++) {
      
      
     s[i] = gen.next();
}      
   
      
  //s[x].drawShape will call the specific drawShape function of whichever
      
       //shape is s[x] and not the drawShape function of class Shape
      
       //That's polymorphism.
      
       for (int i = 0; i < s.length; i++) {
      
      
     s[i].drawShape();
      
       }
      
         }
     }
Comments: