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
Copyright © 2014 AIEC.