| |
Processamento das mensagens
Ou message dispatching; uma mensagem é sempre enviada a um objecto. Que método usar?
- Seja uma mensagem O.M(...)
- Expressões nos parâmetros são computadas
- Máquina Java procura método, percorrendo a hieraquia por cima de O se necessário:
- C = classe de O
- Se existe método M(...) definido e visivel na classe C (mesmo nome, mesma sequência de tipos de parâmetros)
, termina procura
- C = superclasse de C ; se não há superclasse,
aborta execução com excepção (mensagem intratável!)
- this = O, empilha parâmetros, e execução salta para M(...)
- O caso do receptor da mensagem ser super
- Se o objecto for referido por super, processamento é identico ao de this excepto que...
- ...a procura começa na superclasse, ignorando a classe de this
- Um exemplo que poderá surpreender
Isto define o cerne da diferença entre programação clássica e POO...
|