Você está na página 1de 4

Herana

 Capacidade que uma Funcionario


classe (subclasse) tem nome
Superclasse
matricula
de herdar estado dataAdmissao

Herana e Polimorfismo (atributos) e


salario

imprimeSalario()
comportamento tempoDeServico()

(mtodos) de uma outra


classe (superclasse).
Gerente Subclasses
Joo Ferreira gratificacao

Robson Godoi imprimeSalario()

ilostmy.info public class Gerente extends Funcionario


{}

Herana Herana em Java


 Restrio:  Sintaxe: a definio da superclasse
Uma classe pode estender apenas uma feito com a clusula extends:
superclasse diretamente (no existe
Herana Mltipla em Java)
public class Gerente extends Funcionario
 Representao grfica da herana: {

Superclasse Funcionario //atributos especificos de Gerente


//construtor(es)
//metodos especificos de Gerente
Subclasse Gerente

Toda Gerente um Funcionrio, mas nem }


Todo Funcionrio um Gerente!

Herana Herana
 O mecanismo de herana permite reutilizar o  Extensibilidade:
cdigo de classes existentes algumas operaes da superclasse podem
 Apenas novos atributos ou mtodos precisam ser redefinidas na subclasse
ser definidos  Comportamento:
 Herana introduz os conceitos de: objetos da subclasse comportam-se como
Superclasse e Subclasse os objetos da superclasse
 Reuso de Cdigo:  Princpio da Substituio:
Tudo que a superclasse tem, a subclasse tambm objetos da subclasse podem ser usados no
tem lugar de objetos da superclasse
A definio de Gerente (subclasse) vai fazer uso da Onde Funcionario aceito, Gerente tambm
definio de Funcionario (superclasse). ser

1
Herana Construtores e subclasses
 Visilibidade: public class Gerente extends Funcionario{
private double gratificacao;
Atributos e mtodos com o modificador protected public Gerente (int codigo, String nome,
podem ser acessados na classe em que so double salario, double gratificacao)
declarados e nas suas subclasses {
Por isso, quando temos Herana, temos de trocar o super(codigo, nome, salario);
qualificador private para protected this.gratificacao = gratificacao;
}
 Estrutura herdada: atributos e mtodos }
 Construtores:
A clusula super chama o construtor da superclasse, no
no so herdados -> precisam ser implementados
na subclasse. caso acima, o construtor de Funcionario
construtores da subclasse sempre utilizam algum se super no for chamado, o se no existir um construtor
construtor da superclasse atravs da clusula compilador acrescenta uma default na superclasse,
super. chamada ao construtor default: haver um erro de
super() compilao

Herana e a classe Object Observaes sobre Herana


 Toda classe que voc define tem uma  Ela transitiva
superclasse Se B herda de A e C herda de B, a classe C
 Se no for usado "extends", a classe estende vai ter todos os atributos e mtodos de A e
automaticamente a classe "Object" de Java. B.
 Ou seja, tudo que criamos subclasse da  No existe herana mltipla em Java
classe Object.
 A superclasse tem de ter seus atributos
 A classe Object a nica classe de Java que
no herda de nenhuma outra classe: a com qualificador protected. Se usar
superclasse de todas as classes de Java. private, d erro de compilao.

Qualificador final em classes


 Classes declaradas com o modificador Quadrado Crculo Tringulo
final no podem ter subclasses
 Usado por segurana ou por eficincia
Polimorfismo Desenhar
 Strings so exemplos de classes final

Sobrecarga e Sobreposio

2
Polimorfismo Sobrecarga
 Significa usar o mesmo nome para se  Possibilidade de uma classe possuir mais de
referir a mtodos diferentes ou que se um mtodo ou construtor com mesmo nome,
comportam de maneira diferente porm com parmetros diferentes.
 Um objeto pode responder de diferentes
 Temos dois tipos de polimorfismo: maneiras a um mtodo de mesmo nome
sobrecarga (overloading)
 A deciso de qual mtodo chamar feita em
sobreposio (overriding) tempo de execuo, dependendo de qual
parmetro for passado.
 2 tipos de sobrecarga: construtor e mtodos
Conta

calcularJuros()
calcularJuros(int x)

Sobreposio Sobreposio
 Conhecido por overriding ou  A sobreposio s ocorre associada a
sobreposio. um caso de herana, ou seja, entre
 Para que haja a sobreposio de superclasse e subclasse
mtodos, o novo mtodo deve ter a  Ela usada quando o mtodo que seria
mesma assinatura (nome e parmetros) herdado da superclasse no atende aos
que o mtodo da super classe requisitos da subclasse e, por isso,
Conta
 Se o nome for o mesmo, mas os precisa ser sobreposto.
parmetros forem de tipos diferentes calcularJuros()
Conta especial
haver overloading (sobrecarga) e no
sobreposio calcularJuros()

Sobreposio Sobreposio
 Quando se invoca um mtodo da  Exemplo: na classe Funcionrio
subclasse, a classe que sofreu a
public double consultaSalario ()
invocao procura por um mtodo que {
possa ser aplicado. Caso no encontre a }
return salario;

procura repassada para a superclasse.


 A assinatura dos mtodos nos casos de  Na classe Gerente
public double consultaSalario ()
sobreposio DEVE ser a MESMA {
return (salario + gratificacao);
}

3
Exerccio
 A partir do sistema bancrio anteriormente
implementado, crie a classe ContaEspecial
que herda de Conta e tem adicionalmente o
atributo limiteCredito.
Faa os ajustes em Conta necessrios para haver
herana
 Os mtodos sacar e emitirSaldo origintais de
conta devem ser sobrescritos para atender a
ContaEspecial (uma vez que tem de ser
considerado o limite de crdito).
 A classe SistemaBancario precisar ser
modificada para criar contas especiais