- 1. Herana, Reescrita e Polimorfismo
2. Herana
-
- Java suporta apenas o uso de herana simples
-
- Uma subclasse s pode herdar de uma nica superclasse
diretamente
-
- Java suporta a noo de interfaces a fim de oferecer uma
funcionalidade semelhante a herana mltipla
-
- A palavra-chaveextends utilizada na definio de uma classe para
indicar que ela herda de outra classe
-
-
- public class PessoaFisica extends Pessoa { ... }
3. Herana
-
- O conceito de herana define uma hierarquia de classes em
Java
-
-
- A classeObject , que definida no pacotejava.lang , a classe
raiz da hierarquia de classes
-
-
- Exceto a classeObject , toda classe em Java possui uma
superclasse
-
-
- Todos os mtodos definidos na classeObjectpodem ser invocados
por qualquer objeto Java
-
- Uma subclasse no tem acesso direto aos membros privados de sua
superclasse
-
- Todo objeto de uma subclasse tambm um objeto de sua
superclasse
4. Herana 5.
-
- Membros privados de uma superclasse no podem ser acessados por
uma subclasse.
-
- Para chamar um construtor da superclasse utilize
apalavra-chavesuper.
-
- O uso desuperpara invocar o construtor de uma superclasse
anlogo ao uso dethis .
-
-
- supers pode ser usado dentro de um construtor.
-
-
- A chamada ao construtor da superclasse deve aparecer como o
primeiro comando dentro de um construtor.
-
- Java assegura que todo mtodo construtor invoca um construtor de
sua superclasse.
-
- Se o primeiro comando em um construtor no for uma chamada
explcita para um construtor da superclasse, Java implicitamente
insere a chamadasuper()no incio do construtor da subclasse.
Construtores de Subclasses 6. Construtores de Subclasses
7. Encadeamento de Construtores
-
- O que ocorre quando o construtor de uma classe invocado?
-
-
- O corpo do construtor da classe Object executado primeiro
-
-
- Depois, o construtor da superclasse executado
-
-
- Por fim, o construtor da subclasse executado
// Construtor SubClasse() { super() } // Construtor
SuperClasse() { super() } // Construtor Object() { } 8. Construtor
Padro public class Circulo extends Forma { // Suponhamos que a
classe Circulo (subclasse de Forma) // no define nenhum construtor
// Java adiciona o construtor padropublicCirculo() { super ();} }
9. Consideraes Finais sobre Construtores
-
- Se uma classe no define nenhum construtor, Java cria um
construtor pblico para ela ( public )
-
- Classes que no desejam ser instanciadas de forma pblica devem
declarar um construtor protegido ( protected )
-
- Classes que no devem ser instanciadas de forma nenhuma devem
declarar um construtor privado ( private )
10. Sobrescrita de Mtodos
-
- Tambm conhecida comomethod overriding.
-
- Ocorre quando uma subclasse define um mtodo idntico a um mtodo
de sua superclasse
-
-
- Mtodos idnticos possuem o mesmo nome, tipo de retorno e lista
de parmetros
-
- Utilizado quando o comportamento do mtodo da superclasse no
corresponde ao desejado para o mtodo da subclasse
-
- Sobrescrita de mtodo no tem nada a ver com sobrecarga de
mtodo
11. Sobrescrita de Mtodos
- Como garantir que um mtodo de uma superclasse nunca seja
sobrescrito em uma subclasse dela?
-
- Declare o mtodo como final, adicionando a palavra-chavefinalno
prottipo do mtodo
12. Sobrescrita de Mtodos 13. Polimorfismo
-
- Permite que um tipo expresse sua diferena em relao a outro
similar, desde que eles sejam originados do mesmo tipo-base
-
- Completa o trip que define POO, que tambm inclui encapsulamento
e herana
-
- Permite a criao de cdigo extensvel
-
-
- Permite adio de funcionalidades a uma classe tomando-se por
base um cdigo j existente
-
-
- Permite separar a interface da implementao
14. Polimorfismo 15. Polimorfismo
- Ligao de Chamada de Mtodos (binding)
-
- Conexo de uma chamada de mtodo ao corpo de um mtodo:
-
-
- Ligao Prvia (early binding)
-
-
-
- Quando o binding (processo de ligao) feito antes do programa
ser executado
-
-
-
- nica opo disponvel em Pascal e C
-
-
- Ligao Tardia (late binding ou dynamic binding)
-
-
-
- Quando o binding (processo de ligao) feito durante a execuo do
programa
-
-
-
- No se pode determinar, em tempo de compilao ou linkagem, que
mtodo deve ser executado para uma chamada de mtodo
-
-
-
- Disponvel em linguagens como C++ e Java
16. Polimorfismo
-
- Toda chamada de mtodo em Java utiliza ligao tardia, a no ser
que o mtodo seja declarado comofinal
-
-
- O programador no precisa se preocupar com que tipo de ligao ser
utilizada
-
-
- Java descobre o tipo do objeto a que se destina a mensagem
(invocao de mtodo) e executa o corpo de mtodo apropriado para o
tipo do objeto
-
-
- O programador escreve cdigo para a classe-base e sabe que, para
todas as subclasses, ele ser executado corretamente