A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

H ERANÇA E P OLIMORFISMO Prof. Thiago Pereira Rique

Apresentações semelhantes


Apresentação em tema: "H ERANÇA E P OLIMORFISMO Prof. Thiago Pereira Rique"— Transcrição da apresentação:

1 H ERANÇA E P OLIMORFISMO Prof. Thiago Pereira Rique http://thiagorique.wordpress.com/

2 A GENDA Herança Reescrita de método (overriding) Invocando o método reescrito Polimorfismo

3 H ERANÇA Vamos modelar a classe funcionário de um banco.

4 H ERANÇA Em um banco, há também um gerente. Um gerente guarda as mesmas informações de um funcionário comum. Um gerente possui informações e funcionalidades um pouco diferentes.

5 H ERANÇA A classe gerente

6 H ERANÇA Precisamos mesmo de outra classe? Se um dia precisarmos adicionar uma nova informação para todos os funcionários, precisaremos passar por todas as classes de funcionário e adicionar este atributo. Em Java, podemos relacionar duas classes de modo que uma herda características que a outra possui. Classe mãe (superclasse) e classe filha (subclasse) No nosso caso, gostaríamos que gerente tivesse o que funcionário tem (gerente seria uma extensão de funcionário)

7 H ERANÇA Herança Classes de objetos novas são derivadas absorvendo-se características de classes existentes e adicionando-se características únicas dessas mesmas classes.

8 H ERANÇA Classe Gerente estende Funcionario.

9 H ERANÇA Um Gerente é um Funcionario.

10 H ERANÇA Classe de teste.

11 H ERANÇA A subclasse herda todos os membros (atributos e métodos) da superclasse. Membros private não podem ser acessados diretamente pela subclasse. E se precisarmos acessar os atributos que herdamos? Modificador de acesso protected Visível pela classe, subclasses e classes no mesmo pacote.

12 H ERANÇA Modificador de acesso protected

13 H ERANÇA Herança simples do Java

14 R EESCRITA DE MÉTODO (O VERRIDING ) Considere a situação No fim do ano, os funcionários do banco recebem uma bonificação. Funcionários comuns recebem 10% do salário e gerentes, 15%.

15 R EESCRITA DE MÉTODO (O VERRIDING ) A classe Gerente vai herdar o método getBonificacao. O resultado será 500, quando deveria ser 750 (trata-se de um gerente).

16 R EESCRITA DE MÉTODO (O VERRIDING ) Em Java, podemos alterar o comportamento de um método herdado. Podemos reescrever (sobrescrever, override ) este método.

17 I NVOCANDO O MÉTODO REESCRITO Após reescrito, não podemos mais chamar o método herdado da superclasse, mas podemos invocá-lo se estivermos dentro da classe. Palavra reservada super Considere a seguinte situação: Suponha que para calcular a bonificação de um Gerente fazemos o mesmo cálculo de um Funcionario, acrescentando R$ 1000.

18 I NVOCANDO O MÉTODO REESCRITO Poderíamos fazer o seguinte: Qual o problema com esta abordagem?

19 I NVOCANDO O MÉTODO REESCRITO Se o getBonificacao de Funcionario mudar, teremos que modificar o getBonificacao de Gerente. Solução O getBonificacao de Gerente pode chamar o getBonificacao de Funcionario. Palavra reservada super

20 I NVOCANDO O MÉTODO REESCRITO Solução

21 P OLIMORFISMO O que guarda uma variável do tipo Funcionario? Uma referência, nunca um objeto em si.

22 P OLIMORFISMO Conceito Polimorfismo é a capacidade de um objeto poder ser referenciado de várias formas. ATENÇÃO: isto não significa que o objeto se transforma em outro tipo. E se tentássemos funcionario.getBonificacao(); ? Qual seria o retorno? 500 ou 750?

23 P OLIMORFISMO Apesar de estarmos nos referindo ao objeto como um Funcionario, o método invocado será o do Gerente, pois o objeto é do tipo Gerente. Logo, o valor retornado será 750. Para que criar um Gerente e referenciá-lo como um Funcionario? Situação mais comum Método que recebe um argumento do tipo Funcionario.

24 P OLIMORFISMO Método que recebe um argumento do tipo Funcionario.

25 P OLIMORFISMO Em algum lugar da aplicação (ou no main):

26 P OLIMORFISMO No método registra da classe ControleDeBonificacoes, o método getBonificacao do argumento é chamado. Quando o argumento se tratar de um Gerente, o método invocado será o reescrito, isto é, será invocado o método getBonificacao do Gerente. Reafirmando: Não importa como nos referenciamos a um objeto, o método que será invocado é sempre o que é dele.

27 REFERÊNCIA Apostila caelum-java-objetos-fj11 http://www.caelum.com.br/apostilas/


Carregar ppt "H ERANÇA E P OLIMORFISMO Prof. Thiago Pereira Rique"

Apresentações semelhantes


Anúncios Google