Revisando - Herana
Estrutura Hierrquica e modular
Projeo de classes genricas que podem ser
especializadas em classes mais particulares
Classes especializadas reutilizam o cdigo das
mais genricas
A
B
Classe Genrica
Classe D
Especializada
CB
A
C
Caractersticas
Herdadas
Classe
Especializada
Revisando - Herana
Classe genrica, classe base, superclasse ou pai:
Define variveis de instncia genricas e mtodos
Revisando - Polimorfismo
Significa vrias formas
Habilidade de um mesmo tipo de objeto
poder realizar aes diferentes ao receber
uma mesma mensagem
Criao de mltiplas classes com os mesmos
mtodos e propriedades, mas com
funcionalidades e implementaes diferentes
Reescrita de cdigo
Revisando - Polimorfismo
Representao
Animal
Mtodo:
respirar()
Herdam
Cachorro
Peixe
Revisando - Conceitos
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
classe
Comportamento pode ser herdado ou modificado
Classe A e classe B
B herda de A
B subtipo de A
B subclasse A
Herana
Seta vazada
Indica herana
Herana
Herana - Implementao
class ClasseA {
protected int a;
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
}
class ClasseB extends ClasseA{
private int b;
public int getB() {
return b;
}
public void setB(int b) {
this.b = b;
}
}
Herana - Implementao
public static void main(String args[]) {
ClasseA a = new ClasseA();
ClasseB b = new ClasseB();
a.setA(10);
b.setA(20);
b.setB(30);
System.out.println(a.getA());
System.out.println(b.getB());
System.out.println(b.getA());
}
Mtodo herdado de
ClasseA
Subtipos
Uma classe que herda de outra um subtipo
Herana representa relacionamento um
Carro um veculo
Livro uma publicao
Cachorro um mamfero
ClasseA a,b;
a = new ClasseA();
b = new ClasseB();
a.setA(10);
b.setA(20);
//b.setB(30);
System.out.println(a.getA()+b.getA());
Classe Object
Classe base em JAVA
Tudo herda de Object
Define alguns mtodos:
public String toString()
public boolean equals()
entre outros...
class UmaClasse {
/* ... */
}
Teste 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
Construtores
Toda classe JAVA tem pelo menos um construtor
Se no for definido cria um padro
public NomeClasse(){...}
Construtores
O cdigo abaixo pode no compilar
class ClasseD extends ClasseA{
public ClasseD(){
/*...*/
}
}
Exerccio em Sala
Implementar as classes do seguinte diagrama:
Exerccio em Sala
Todas as classes devem ter construtor
parametrizado, acessando os construtores da
classe pai
Criem uma classe de teste