Polimorfismo, Interfaces, Classes Abstractas/Editor gráfico sem classes abstractas

From Wiki**3

< Polimorfismo, Interfaces, Classes Abstractas

Neste exemplo, o editor de formas apresenta polimorfismo, mas não tem classes abstractas.

A definição de subclasses permite, no entanto, distinguir os objectos.

public class Forma {
  public void desenha() {
    System.out.println("dd");
  }
}

As subclasses, neste caso muito simples, limitam-se a especializar o nome do conceito base.

public class Quadrado extends Forma{}
public class Triângulo extends Forma{}
public class Círculo extends Forma{}

O editor cria um vector de formas e preenche-o com formas escolhidas aleatoriamente.

class Editor {
  public static Forma formaAleatória() {
    switch ((int)(Math.random()*3)) {
      default:
      case 0: return new Círculo();
      case 1: return new Quadrado();
      case 2: return new Triângulo();
    }
  }

  public static void main(String args[]) {
    Forma fv[] = new Forma[9];
    for (int i = 0; i < fv.length; i++)
      fv[i] = formaAleatória();
    for (Forma f: fv) f.desenha();
  }
}