Você está na página 1de 20

Relacionamento entre classes

Herana

O que
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 Todos os atributos e mtodos definidos em A tambem existem em B

Herana
Setavazada indicaherana

Carropossui todasas caractersticas deTerreste etambm deVeiculo

Herana em JAVA
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; } } 4

usamosextendspara indicarheranaemJAVA

Execuo
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.getA()); System.out.println(b.getB()); }

Mtodo herdado deClasseA

TodososmembrosdefinidosemClasseA tambmexistemClasseB
5

Subtipos
Uma classe que herda de outra um subtipo Herana representa relacionamento um Carro um veculo Livro uma publicao Cachorro um mamfero

Podemos ter uma varivel do tipo ClasseA que referencia um objeto do tipo ClasseB
varivelbNO executamtodos deClasseB,pois elasconhecea interfacede ClasseA 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()); 6

Visibilidade (resumo)
Quatro formas de visibilidade em JAVA public
Membros acessveis por qualquer classe

proteced
Membros acessveis por classe e subclasses

private
Membros acessveis apenas por objetos da prpria classe

default (pacote)
Membros acessveis pode classes do mesmo pacote e subclasses
7

Sobrescrita
Podemos redefinir um mtodo na subclasse
Sobrescrita do mtodo Muda comportamento definido na superclasse
class ClasseB extends ClasseA{ private int b; public int getB() { return b; } public void setB(int b) { this.b = b; } public void setA(int a) { this.a = a+b; } }

Valorimpresso ser20

ClasseB b = new ClasseB(); b.setB(10); b.setA(10); System.out.println(b.getA()); 8

Sobrescrita
possvel chamar o mtodo da superclasse
Palavra super super.metodo();

Pode ser usado em qualquer mtodo


Podemos sobrescrever o mtodo para adicionar funcionalidade, mantendo a funcionalidade existente
class Superclasse{ Chamadaaomtodo /* ...*/ dasuperclasse public void metodo(int x){ /* ... */ } /* ... */ class Subclasse extends Superclasse{ } public void metodo(int x){ /* ... */ super.metodo(10); /* ...s */ } }

Classe Object
Classe base em JAVA
Tudo herda de Object Define alguns mtodos:
public String toString() public boolean equals() entre outros... Includoporpadro
class UmaClasse extends Object{ /* ... */ }
10

class UmaClasse { /* ... */ }

instanceof
Operador
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 ClasseB) System.out.println("obj ClasseA"); if (obj instanceof ClasseA) System.out.println("obj ClasseB"); if (obj instanceof ClasseC) System.out.println("obj ClasseC"); }

objdaClasseA edaClasseC
11

Construtores
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 Compilador coloca cdigo caso o programador no coloque
class ClasseD extends ClasseA{ public ClasseD(){ super(); /*...*/ } } class ClasseD extends ClasseA{ public ClasseD(){ /*...*/ } }

12

Construtores
O cdigo abaixo pode no compilar
class ClasseD extends ClasseA{ public ClasseD(){ /*...*/ } }

Se ClasseA no possuir construtor sem argumentos


13

Polimorfismo
Muda comportamento Mtodo executado depende da classe do objeto mesma chamada executa mtodos diferentes
obj.metodo() vai executar mtodo que foi definido para classe do objeto referenciado por obj

Permite executar mtodos de subclasses mesmo sem conhec-las Usado junto com sobrescrita

14

Polimorfismo
class Classe1 { public String m() { return "Classe1"; } } class Classe2 extends Classe1 { public String m() { return "Classe2"; } } class Classe3 extends Classe1 { public String m() { return "Classe3"; } } class Classe4 extends Classe2 { public String m() { return "Classe4"; } }

Mesmaoperao
Classe1 a, b, c, d; a = new Classe1(); b = new Classe2(); c = new Classe3(); d = new Classe4(); System.out.println(a.m()); System.out.println(b.m()); System.out.println(c.m()); System.out.println(d.m());

Ter 4 impresses diferentes Experimente chamar o mtodo da superclasse super.m()

15

Classes abstratas
No podem ser instanciadas
Usadas com herana
Definir superclasse com caractersticas e comportamento comuns e cada subclasse implementa suas especificidades No existem animais da classe mamfero, apenas de suas subclasses

Palavra abstract antes do nome da classe

public abstract class Mamifero{ /* ... */ } 16

Classes abstratas
Mtodos podem ser abstratos
No possuem implementao Devem ser implementados pelas subclasses Ou estas tambm sero abstratas Se uma classe possuir pelo menos um mtodo abstrato, ela deve ser abstrata Classe abstratas podem ter mtodos implementados
public abstract class Mamifero{ public abstract String metodo(); }

Nopossui implementao

17

Classes finais
No podem ser herdadas
No possuem subclasses

No podem ser abstratas


Por consequencia, no possuem mtodos abstratos

Palavra final antes de class


public final class Gato{ /* ... */ } 18

Dvidas

? ?? ? ?? ? ?? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ?? ? ? ?? ? ? ? ? ?? ? ?? ? ?? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

19

Exerccios
1 Defina duas subclasses de Contato ContatoPessoaFisica ContatoPessoaJuridica 2 Defina metodos que conte a quantidade de cada tipo de contato 3 Faa a classe Contato abstrata 4 Sobrescreva o mtodo toString 5 Inclua uma opo no Menu para mostrar todos os contatos Acrescente os mtodos que achar necessario 6 Altere o exerccio do banco para que o mesmo passe a aceitar dois tipos de conta: corrente e poupana Faa a classe Conta abstrata Altere o que for necessrio
20

Você também pode gostar