Aula 13 Herança e Polimorfismo
-
Upload
jackson-silva -
Category
Documents
-
view
222 -
download
2
description
Transcript of Aula 13 Herança e Polimorfismo
-
Herana e PolimorfismoHerana e Polimorfismo
Programao Orientada a ObjetosProgramao Orientada a Objetos
Prof. Bruno GomesProf. Bruno Gomes
[email protected]@ifrn.edu.br
-
Revisando Revisando -- HeranaHerana
Estrutura Hierrquica e modular
Projeo de classes genricas que podem ser
especializadas em classes mais particulares
Classes especializadas reutilizam o cdigo das Classes especializadas reutilizam o cdigo das
mais genricas AB
CA
BA
BC
D
E
Caractersticas
Herdadas
Classe Genrica
Classe
Especializada
Classe
Especializada
-
Revisando Revisando -- HeranaHerana
Classe genrica, classe base, superclasse ou pai:
Define variveis de instncia genricas e mtodos
Classe especializada, derivada, subclasse ou filha:
Especializa, estende ou herda os mtodos genricos de Especializa, estende ou herda os mtodos genricos de uma superclasse
Define apenas os mtodos que so especializados
-
Revisando Revisando -- PolimorfismoPolimorfismo
Significa vrias formas
Habilidade de um mesmo tipo de objeto
poder realizar aes diferentes ao receber
uma mesma mensagemuma mesma mensagem
Criao de mltiplas classes com os mesmos
mtodos e propriedades, mas com
funcionalidades e implementaes diferentes
Reescrita de cdigo
-
Revisando Revisando -- PolimorfismoPolimorfismo
Representao
Mtodo:
respirar()Animal
Cachorro Peixe
Herdam
-
Revisando Revisando -- ConceitosConceitos
Reuso de uma classe
Tudo que foi definido para uma classe vai ser aproveitado em outra classe
Representa especializao
Um tipo mais genrico cujas caractersticas sero herdadas por outra classeUm tipo mais genrico cujas caractersticas sero herdadas por outra classe
Comportamento pode ser herdado ou modificado
Classe A e classe B
B herda de A
B subtipo de A
B subclasse A
Todos os atributos e mtodos definidos em A tambm existem em B
-
HeranaHerana
Seta vazadaSeta vazadaIndica herana
-
HeranaHerana
Carro possui todas as caractersticas de
Terreste e tambm de Veiculo
-
Herana Herana -- ImplementaoImplementao
class ClasseA {protected int a;public int getA() {
return a;}
public void setA(int a) {this.a = a;this.a = a;
}
}
class ClasseB extends ClasseA{private int b;public int getB() {
return b;}
public void setB(int b) {this.b = b;
}
}
extends usado para indicar herana em JAVA
-
Herana Herana -- ImplementaoImplementao
public static void main(String args[]) {ClasseA a = new ClasseA();ClasseB b = new ClasseB();a.setA(10);b.setA(20);b.setB(30);
Mtodo herdado de
ClasseA
b.setB(30);System.out.println(a.getA());System.out.println(b.getB());System.out.println(b.getA());
}
Todos os membros definidos em ClasseA
tambm existem em ClasseB
-
SubtiposSubtipos
Uma classe que herda de outra um subtipo
Herana representa relacionamento um
Carro um veculo
Livro uma publicao
Cachorro um mamfero Cachorro um mamfero
Podemos ter uma varivel do tipo ClasseA que
referencia um objeto do tipo ClasseBClasseA a,b;
a = new ClasseA();
b = new ClasseB();
a.setA(10);
b.setA(20);
//b.setB(30);
System.out.println(a.getA()+b.getA());
varivel b NOexecuta mtodosde ClasseB, poisela s conhece ainterface deClasseA
-
Classe Classe ObjectObject
Classe base em JAVA
Tudo herda de Object
Define alguns mtodos:
public String toString()public String toString()
public boolean equals()
entre outros...
class UmaClasse {/* ... */
}class UmaClasse extends Object{
/* ... */
}
Includo por padro
-
Teste de IgualdadeTeste de Igualdade
Operador instanceof
Determina se um objeto obj de uma classe Cla
retorna valor lgico (booleano)
sintaxe: obj instanceof Cla
public static void main(String args[]){
ClasseA obj;
obj = new ClasseC();
if (obj instanceof ClasseA)
System.out.println("obj ClasseA");
if (obj instanceof ClasseB)
System.out.println("obj ClasseB");
if (obj instanceof ClasseC)
System.out.println("obj ClasseC");
}
obj da ClasseA
e da ClasseC
-
ConstrutoresConstrutores
Toda classe JAVA tem pelo menos um construtor
Se no for definido cria um padro
public NomeClasse(){...}
Todo construtor deve chamar o construtor da superclasse
Deve ser o primeiro comando do construtor Deve ser o primeiro comando do construtor
Compilador coloca cdigo caso o programador no coloque
class ClasseD extends ClasseA{public ClasseD(){
super();/*...*/
}
}
class ClasseD extends ClasseA{public ClasseD(){
/*...*/
}
}
-
ConstrutoresConstrutores
O cdigo abaixo pode no compilar
class ClasseD extends ClasseA{public ClasseD(){
/*...*/}
Se ClasseA no possuir construtor sem
argumentos
}}
-
Exerccio em SalaExerccio em Sala
Implementar as classes do seguinte diagrama:
Detalhes no prximo slide
-
Exerccio em SalaExerccio em Sala
Todas as classes devem ter construtor
parametrizado, acessando os construtores da
classe pai
Criem uma classe de teste Criem uma classe de teste