Buscar

Aula 9 Polimorfismo

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

Polimorfismo
Polimorfismo
“É o meio pelo qual duas ou mais classes 
derivadas de uma mesma superclasse podem 
executar métodos que têm a mesma 
assinatura.” Sun Certified Java Associate (SCJA) Marcelo Castellani
Polimorfismo
• Porém esses métodos possuem execução 
diferente, dependendo de sua aplicação em 
cada classe onde fora definido.
Exemplo
• Classe abstrata chamada Carro
• Com o método velocidadeNaCurva
• Esse método retorna qual a velocidade de um carro 
no momento de efetuar uma curva
• Programamos essa classe abstrata nas classes Ferrari 
e Fusca. Usando polimorfismo, definimos o mesmo 
método para as duas classes e obtemos diferentes 
valores
Operador instanceOf
• O tipo específico de um objeto pode ser 
determinado utilizando-se o operador 
instanceOf
– <varobjeto> instanceOf <classe>
– Retorna um valor booleano
• É útil quando se necessita selecionar um 
método específico a ser executado baseado 
no tipo do objeto.
Operador instanceOf
• Exemplo:
public void operacao(Conta c){
...
if (c instanceOf ContaSuper){
((ContaSuper c).aumentaLimite(100);
}
...
}
– Conta é superclasse de ContaSuper
– Note que a conversão (cast) explícito é necessário, 
pois aumentaLimite() é um método de ContaSuper e 
não de Conta!
Modificador final
• Uma variável ou atributo pode ser marcado como 
final para se tornar uma constante
final double PI = 3.14;
• Um método pode ser marcado como final para 
impedir que seja sobrescrito.
public final void meuMetodo(){}
• Uma classe pode ser marcada como final para 
impedir que possa ser estendida com subclasses.
public final class Color{}
Classes Abstratas
“ Uma classe abstrata é uma classe incompleta 
onde alguns ou todos os seus métodos não 
possuem implementação,servindo apenas 
para definir uma interface(Contrato).”
Classes Abstratas
• Classes abstratas são classes que não podem 
ser instanciadas
• São utilizadas apenas para permitir a 
derivação de novas classes
Classes Abstratas
• Identificamos uma classe como abstrata pelo 
modificador abstract
– Um método definido como abstract indica que a 
classe não implementa aquele método e que ele deve 
obrigatoriamente ser implementado nas classes 
derivadas
– Todos os métodos não definidos de uma classe 
abstrata deverão ser definidos nas derivadas ou estas 
continuarão a ser consideradas abstratas e não 
poderão ser implementadas. 
– Em uma classe abstrata um ou mais métodos são 
declarados, mas não implementados.
Exemplo
public abstract class Animal
{
private String tipo; 
public abstract void sound(); // Método abstrato
public Animal (String tipo)
{
tipo = new String(tipo);
}
}
Classes Abstratas
• Como o método sound( ) desenvolvido na classe 
Animal não possui nenhuma instrução, deve ser 
declarado como abstract (para que não fique sem 
sentido).
• Este tipo de situação (criar uma superclasse a partir da 
qual subclasses serão derivadas) acontece muito 
freqüentemente em programação orientada a objetos, 
quando o objetivo é apenas tirar vantagem do 
polimorfismo.
• A característica do polimorfismo é garantir que o 
objeto sabe como deve reagir a uma dada mensagem, 
independente do tipo de referência usada para acessá-
lo. 
Classes Abstratas
Classes Abstratas
public class Animal{
private String nome;
public Animal(String n) {
nome = n;
}
public void imp() {
System.out.println("Nome: "+nome);
}
public String getName() { return(nome); 
}
public void talk() {
System.out.println("Eu nao falo");
}
}
Classes Abstratas
• Classe Animal
– Na prática, nunca iremos instanciar um Animal. A 
classe serve apenas para a definição de mamíferos 
e pássaros.
– Da mesma forma, não instanciamos Mamifero
nem Passaro.
– Somente instanciamos objetos BemTevi, Papagaio, 
Cachorro e Vaca.
– Logo, Animal, Mamifero e Passaro são classes 
abstratas
Classes Abstratas
public abstract class Animal{
private String nome;
public Animal(String n) {
nome = n;
}
public void imp() {
System.out.println("Nome: "+nome);
}
public String getName() { return(nome); }
public abstract void talk();
// talk não foi implementado nesta classe
}
Classes Abstratas
public abstract class Passaro extends Animal{
public Passaro(String n) {
super(n);
}
public void talk() {
System.out.println("Piu piu");
}
}
public abstract class Mamifero extends Animal{
public Mamifero(String n) {
super(n);
}
public abstract void talk();
//talk não foi implementado
}
Exercício pesquisa
• Enviar para o email do professor
• Nome completo do Aluno
Exercícios
• 1) “O polimorfismo é proporcionado pela
• vinculação dinâmica de mensagens a definições
• de métodos” Verdadeiro ou Falso ?
• 2) Como o polimorfismo e a vinculação dinâmica
• facilitam a extensão dos sistemas ? Deitel 405
• [454] e Sebesta 421
• 3) O que é um método final ? Deitel 406 [455]
• 4) Quais as vantagens do polimorfismo para o
• programador ? Deitel 407 [456]
continuação
5. O conceito-chave polimorfismo é um fenômeno 
pelo qual:
a) elementos mais específicos incorporam a estrutura e o 
comportamento de elementos mais gerais. 
b) dois ou mais objetos podem responder à mesma 
mensagem de maneiras diferentes. 
c) são ocultados os dados, a estrutura e os detalhes de 
implementação de um objeto. 
d) uma entidade é diferenciada de todos os outros tipos. 
e) um objeto aloca espaço e permanece acessível na 
memória do computador.
continuação
• Escreva um código utilizando os princípios do 
polimorfismo. Esse código deve ser executado 
sem erros de compilação e execução.

Outros materiais