O conjunto de classes Java, incluindo aquelas que não pertencem à API forma uma hierarquia com uma raiz única. Essa raiz é a classe Object da qual todas as outras classes são herdadas. Na verdade, se não for mencionada explicitamente nenhuma relação de herança no momento de escrita da classe, por padrão, será considerada a herança da classe Object. Graças a essa propriedade, as classes genéricas que agrupam conjuntos (Array, List etc.), agrupam objetos que pertencem à classe Object.

Uma das propriedades que derivam do polimorfismo é que o interpretador Java é capaz de encontrar o tratamento adequado a ser utilizado quando chamamos um método de um objeto. Assim, mesmo com muitos objetos declarados na mesma classe, mas com diferentes classes reais, o interpretador será capaz de utilizar o método adequado à classe real. Se um método for redefinido para a classe real de um objeto então no momento da chamada será chamado o método da classe mais específica do objeto.

No exemplo seguinte, o método mostrar() foi redefinido em cada uma das classes para mostrar a informação correta do objeto específico:

for (int i = 0 ; i < tabela.length ; i++) {
tabela[i].mostrar();
}

O resultado da execução desse trecho de código seria:

retangulo 10x20
circulo 15
retangulo 5x30
quadrado 10

No estado atual das nossas classes, o código não poderá ser compilado. Na verdade a função mostrar() é chamada para cada um dos objetos mesmo que a classe forma não esteja definida na classe forma.

Copyright © 2014 AIEC.