Shapes.java





public class Shapes extends JApplet {
  JTextArea  Xout  = new JTextArea(5, 20);
  public void init() {
    Container cp = getContentPane();
    cp.setLayout(new FlowLayout());
    cp.add(new JLabel("Shapes"));
    cp.add(new JScrollPane(Xout));
    ArrayList s = new ArrayList();
    s.add(new Circle());
    s.add(new Square());
    s.add(new Triangle());
    Iterator e = s.iterator();
    while(e.hasNext())
      ((XShape)e.next()).draw();
  }

class XShape {
  void draw() {
    Xout.append(this + "  Generic Draw\n");
  }
}

class Circle extends XShape {
  public String toString() { return "Circle"; }

  void draw() { 
    Xout.append("Circle Specfic Draw\n"); 
  }


}

class Square extends XShape {
  public String toString() { return "Square"; }
}

class Triangle extends XShape {
  public String toString() { return "Triangle"; }
}

public static void main(String[] args) {
        Console.run(new Shapes(), 250, 150);
}

} ///:~