3. O que é Herança?
Através da herança podemos fazer com que uma classe
herde propriedades de outra classe.
Geralmente devemos identificar classes que possuem
propriedades e comportamentos similares.
A base da herança pode ser listada como a seguir :
– propriedades comuns são transmitidas aos
descendentes
– descendentes podem adicionar/alterar propriedades
– estabelecem uma hierarquia de classes
– reduzem a quantidade de código
11. Exemplo
Na herança, vimos que toda PessoaFisica é
uma Pessoa, pois é uma extensão desta. Podemos nos
referir a uma PessoaFisica como sendo uma Pessoa.
12. POLIMORFISMO
Polimorfismo é a capacidade de um objeto
poder ser referenciado de várias formas.
(cuidado, polimorfismo não quer dizer que o
objeto fica se transformando, muito pelo
contrário, um objeto nasce de um tipo e
morre daquele tipo, o que pode mudar é a
maneira como nos referimos a ele).
19. Outro Exemplo
Toda fábrica possui funcionários. Vamos imaginar
que ao fim do ano, caso as metas sejam
cumpridas, todos funcionários recebam um bônus de
10% sobre o salário mensal:
class Funcionario {
String nome;
String cpf;
double salario;
public double getBonificacao() {
return salario * 0.10;
}
}
20. Outro Exemplo
Além de funcionários comuns, há também outros cargos,
como os gerentes. Os gerentes tem as mesmas
informações que um funcionário comum + o número de
subordinados a eles.
Além disto, possui uma bonificação de 20%.
class Gerente extends Funcionario {
int numDeSubordinados;
}
Se não alterarmos a
classe Gerente , ela herdará do
Funcionário o método
getBonificacao.
21. Outro Exemplo
class Principal {
public static void main(String[] args) {
Gerente g= new Gerente();
Funcionario f = new Funcionario();
g.setNome(“Aloisio");
g.setSalario(10000.0);
f.setNome(“José");
f.setSalario(2000.0);
double bg = g.getBonificacao( );
double bf = f.getBonificacao( );
}
}
1.000 = 10%
200 = 10%
22. Solucionando
Para solucionar isto, uma das opções seria criar
um novo método na classe Gerente, chamado, por
exemplo: getBonificacaoGerente.
Problema: 2 métodos em Gerente, com respostas
diferentes e gerando confusão.
Solução: Quando herdamos um método, podemos
reescrever este método, alterarando seu
comportamento.
23. Solucionando
class Gerente extends Funcionario {
int numDeSubordinados;
@override
public double getBonificacao() {
return salario * 0.20;
}
}
Reescrevendo
método
24. • Java - Como programar, Harvey M. Deitel
• eclipse.org
• www.oracle.com/technetwork/java/index.html
• http://www.caelum.com.br/apostila-java-
orientacao-objetos/heranca-reescrita-e-
polimorfismo/#7-4-polimorfismo