TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Polimorfismo (Java)

Ensaios: Polimorfismo (Java). Pesquise 862.000+ trabalhos acadêmicos

Por:   •  7/9/2014  •  1.095 Palavras (5 Páginas)  •  312 Visualizações

Página 1 de 5

Polimorfismo

É o mecanismo que permite chamar métodos com a mesma assinatura, mas com comportamentos diferentes, usando a mesma variável objeto e sem determinar, em tempo de compilação, a qual subclasse ou superclasse o objeto pertence. O método correto será acionado dependendo do objeto referenciado em tempo de execução.

Para que o polimorfismo funcione deve-se declarar uma variável objeto cujo tipo é a superclasse, pois esta variável pode referenciar tanto objetos da superclasse como de qualquer subclasse. A identificação correta de qual método deverá ser invocado é realizada pela JVM, a qual verifica qual é o objeto real que a variável está referenciando para acionar o método adequado.

Exemplo:

package principal;

import subClasses.Cliente;

import subClasses.Funcionario;

import superClasse.Pessoa;

public class Main {

public static void main(String[] args) {

Pessoa pessoas[] = new Pessoa[4];

int indice = 0;

pessoas[indice] = new Funcionario(1200);

indice++;

pessoas[indice] = new Funcionario(2400);

indice++;

pessoas[indice] = new Cliente("111.111.111-11");

indice++;

pessoas[indice] = new Cliente("222.222.222-22");

indice++;

System.out.println("Esses são os dados dos funcionários e clientes:\n");

for (indice = 0; indice < 4; indice++) {

System.out.println(pessoas[indice]);

}

}

}

O polimorfismo está na declaração de um vetor de objetos do tipo Pessoa (não precisa ser um vetor).

No entanto, note que "dentro" desse vetor, onde foram criadas 4 referências de superclasse,duas posições foram instanciadas como objetos Funcionários e o restante, como Cliente. Ambas as classes herdam Pessoa.

Note que os métodos toString() (invocados de maneira implí¬cita) de cada uma das classes apresentaram resultados diferentes, ou seja: não foi chamado o toString() de Pessoa, mas das outras classes.

Assim, pode-se dizer que A PARTIR DE UMA REFERÊNCIA DE UMA SUPERCLASSE, É POSSÍVEL REFERENCIAR SUBCLASSES E CHAMAR - APENAS - MÉTODOS COMUNS AS DUAS.

O fato do toString() das subclasses serem executados ao invés do toString() de Pessoa, deve-se ao Overriden.

package superClasse;

public class Pessoa {

private String nome;

private String sobrenome;

/**

* @return the nome

*/

public String getNome() {

return nome;

}

/**

* @param nome the nome to set

*/

public void setNome(String nome) {

this.nome = nome;

}

/**

* @return the sobrenome

*/

public String getSobrenome() {

return sobrenome;

}

/**

* @param sobrenome the sobrenome to set

*/

public void setSobrenome(String sobrenome) {

this.sobrenome = sobrenome;

}

// @Override

public String toString(){

return String.format("%s%s\n",

"Nome : ",

this.getNome());

}

}

package subClasses;

import superClasse.Pessoa;

public class Cliente extends Pessoa{

private String cpf;

...

Baixar como (para membros premium)  txt (4.8 Kb)  
Continuar por mais 4 páginas »
Disponível apenas no TrabalhosGratuitos.com