Também podemos declarar o objeto com uma classe superior a sua classe real. Essa propriedade é muito útil para a criação de conjuntos que agrupam objetos de classes diferentes.
O exemplo seguinte armazena objetos de diferentes classes em um array do tipo da superclasse Forma.
Forma[] tabela = new Forma[4]; tabela[0] = new Retangulo(10,20); tabela [1] = new Circulo(15); tabela [2] = new Retangulo (5,30); tabela [3] = new Quadrado(10);
O operador instanceof pode ser utilizado para testar a classe real de um objeto, conforme mostrado a seguir:
for (int i = 0 ; i < tabela.length ; i++) { if (tabela[i] instanceof Forma) System.out.println(”element ” + i + ” é uma forma”); if (tabela [i] instanceof Circulo) System.out.println(”element ” + i + ” é um círculo”); if (tabela [i] instanceof Retangulo) System.out.println(”element ” + i + ” é um retângulo”); if (tabela [i] instanceof Quadrado) System.out.println(”element ” + i + ” é um quadrado”); }
A execução desse código para a tabela anteriormente definida mostrará o seguinte resultado:
element[0] é uma forma element[0] é um retângulo element[1] é uma forma element[1] é um círculo element[2] é uma forma element[2] é um retângulo element[3] é uma forma element[3] é um retângulo element[3] é um quadrado