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();
}
}