Académique Documents
Professionnel Documents
Culture Documents
em Java
Profa Andra Schwertner Charo
DELC/CT/UFSM
Sumrio
Herana
Polimorfismo
Conceitos
Exemplo
Herana
"Um dia tudo isso ser seu..."
Herana
Inspirao no mundo real
Pais transmitem aos filhos suas caractersticas
e comportamento
Herana e POO
Permite criar classes que aproveitam atributos
reutilizao de cdigo
com flexibilidade
Usos:
especializao
extenso
sobreposio
Herana
Exemplo: classe Pessoa (existente)
Pessoa
nome
rg
getNome()
mostra()
Herana
Novas classes: Estudante e Professor
Pessoa
nome
rg
getNome()
mostra()
Estudante
Professor
curso
departamento
ferias
mostra()
marcaFerias()
mostra()
Herana
Super-classe
(classe-pai, classe-me,
classe-base)
Terminologia
Pessoa
nome
rg
getNome()
mostra()
Classe derivada
(sub-classe)
Professor
Estudante
curso
mostra()
Classe derivada
(sub-classe)
Estudante e
Professor
so
especializaes
de Pessoa
departamento
ferias
marcaFerias()
mostra()
Herana
Atributos so herdados
Pessoa
Estudante e Professor
herdam atributos
(nome e rg)
de Pessoa
nome
rg
getNome()
Atributos
de Estudante:
mostra()
Estudante
curso
mostra()
nome
rg
curso
departamento
ferias
marcaFerias()
mostra()
Herana
Mtodos (funcionalidades) so herdados
Estudante e Professor
herdam funcionalidades
de Pessoa
Funcionalidades
de Estudante:
getNome()
mostra()
Estudante
curso
mostra()
Pessoa
nome
rg
getNome()
mostra()
mtodo getNome() est
implcito devido herana
mtodo mostra() de
Estudante sobrepe
(override) o mtodo
mostra() de Pessoa()
Professor
departamento
ferias
marcaFerias()
mostra()
Herana
Novas classes: Estudante e Professor
Estudante e Professor
herdam funcionalidades
de Pessoa
Estudante
curso
mostra()
Pessoa
nome
rg
getNome()
mostra()
Funcionalidades
de Professor:
getNome()
marcaFerias()
mostra()
mtodo marcaFerias()
uma funcionalidade
somente de Professor
Professor
departamento
ferias
marcaFerias()
mostra()
Herana e UML
Diagrama de classes
Herana e UML
Diagrama de classes
Herana em Java
Usa palavra-chave extends na declarao das
sub-classes
classSuperClasse{
privateintapriv;
publicintapub;
privatevoidmetpriv();
publicvoidmetpub();
}
classSubClasse
extendsSuperClasse{
}
SubClasseobj=newSubClasse();
obj.apub=99;
obj.metpub();
SubClasseobj=newSubClasse();
obj.apriv=10;
obj.metpriv();
Construtor de Pessoa
invocado
implicitamente
Mtodo setNome()
herdado de Pessoa
Mtodo mostra()
deve mostrar
nome e curso
Mtodo mostra()
deve mostrar
nome e curso
super-classe
Deve estar na primeira linha do construtor da
sub-classe
Visibilidade protected
Atributos e mtodos protected da super-
Atributo nome
acessado
normalmente
Mtodo mostra()
de Estudante
estende o mtodo
mostra() de Pessoa
mltipla
Em Java, todas as classes derivam
mtodos teis:
Uso de this
Referncia para o objeto corrente
Pode ser usado para invocao explcita de um
construtor
"this" no tem
nada a ver com
herana,
mas assemelha-se a
"super"
em seu uso
classRelogio
{
privateinthora,minuto;
Relogio(inthora,intminuto)
{
this.hora=hora;
this.minuto=minuto;
}
Relogio()
{
this(0,0);
}
}
pessoa estudante"
Pessoap;
Estudantee=newEstudante();
p=e;
//e=p;//Errado!
Polimorfismo
Significa: muitas formas
Um nico nome de mtodo, vrias
implementaes
Sobrecarga (overloading) e sobrescrita
mtodo toString()
mtodo mostra()
mtodos construtores
refp=e;
refp.mostra();
refp=p;
refp.mostra();
}
}
Mtodo mostra()
de Pessoa
Polimorfismo dinmico
O exemplo do slide anterior ilustra
polimorfismo dinmico
Vinculao dinmica (dynamic binding):