Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouGabriela Alves Alterado mais de 10 anos atrás
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/
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.