Polimorfismo em construtores

A invocação de métodos com ligação tardia abre uma possibilidade de invocar construtores cujo comportamento poderia ser diferenciado polimorficamente. A título de exemplo, considere o seguinte código envolvendo uma classe Derivada e uma classe Base cujo construtor invoca um método implementado na classe derivada e apresenta o seguinte resultado.

O resultado dessa execução pode ser explicado pela seqüência de ações que é obedecida para a construção de um objeto a partir do momento no qual seu construtor é invocado. O comportamento apresentado nesse exemplo pode ser diferente daquele intuitivamente esperado por um programador que esteja analisando um código onde esta situação. Em um programa de maior porte, pode levar a situações de erro de difícil detecção.

A recomendação que se faz com relação à utilização de métodos no corpo de construtores é

Não invoque métodos no corpo de construtores a menos que isto seja seguro.

Métodos seguros para invocação a partir de construtores são aqueles que não podem ser redefinidos.


© Ivan Luiz Marques Ricarte
DCA/FEEC/UNICAMP

Last modified: Wed Jun 28 18:22:13 EST 2000