Herança e polimorfismo

Propaganda
Herança e polimorfismo
Giuliana Silva Bezerra
Herança
 Mecanismo de orientação a objetos que permite que
uma classe seja derivada de outra, herdando seus
atributos e métodos.
 Objetivo:
– Permitir o reuso de código de classes existentes,
sem a necessidade de reescrever ou copiar tal código.
Herança
 Quando a classe B herda da classe A, dizemos
que:
– B é subclasse de A
– A é a superclasse de B
 Uso da construção “extends” para fazer uma
classe herdar de outra
Herdando atributos e métodos
 Uma subclasse herda todos os atributos e
métodos da sua superclasse que sejam públicos
 Uso de protected
 Construtores não são herdados, embora o
construtor de uma superclasse possa ser
chamado pelo construtor da subclasse
 Os atributos e métodos herdados podem ser
usados livremente dentro da classe, como se
fossem dela
Classe pessoa
Classe Aluno herdando de Pessoa
Sobrecarga de métodos
 Ocorre quando uma classe declara métodos de
mesmo nome.
 OBS: Observe que as assinaturas dos métodos são
diferentes.
Polimorfismo
 “Um nome, vários comportamentos”
 Ex: abrir
Porta, caixa, janela, conta bancária, etc..
 OBS: Métodos da mesma classe podem ter o mesmo
nome, desde que possuam quantidade ou tipo de
parâmetros diferentes(assinaturas diferentes) e,
métodos da classe derivada podem ter nomes iguais
aos da classe base, inclusive com parâmetros iguais.
Exemplo
Acessar métodos de superclasses
 A palavra-chave “super” pode ser usada para
acessar métodos sobrepostos pela subclasse
 No caso de construtores basta usar diretamente
a palavra “super”
Exemplo
Classes e métodos final
 Classes declaradas como final não podem ter
subclasses
 Métodos declarados como final não podem ser
sobrepostos
Conversão (casting) de objetos
 Em Java, é permitido que objetos de um dado
tipo possam ser atribuídos para referências
 Objetos podem ser atribuídos para referências
de objetos do mesmo tipo ou qualquer supertipo
 Caso obj não seja do tipo Aluno, uma exceção
será lançada
Exemplo
Cat c1 = new Cat();
Animal a = c1;
//automatic upcasting to Animal
Cat c2 = (Cat) a;
//manual downcasting back to a Cat
Teste do tipo de objetos
 Para evitar exceções relacionadas a conversões
(casting) pode se usar o operador instanceof
 Exemplo:
 Obj é um Aluno?
Classes e métodos abstratos
 Classes abstratas não podem ser instanciadas
 Métodos abstratos só serão implementados pela
subclasse
 Cabe a classe herdeira da classe abstrata
implementar seus métodos abstratos
Herança em Java
 Toda classe em Java deve herdar necessariamente
de alguma outra.
 Caso não seja declarada explicitamente, o
compilador garante que a sua classe irá herdar da
classe Object
Interfaces
 Obrigam as classes a implementarem seus
métodos
 Uso da palavra “implements”
Exercício 1

Implementar as classes “Pessoa” e “Aluno”:
Exercício 2
Download