Duvida em criação de componentes

Delphi

28/09/2006

Boa tarde,

Alguém poderia me dizer a diferença em declarar o constructor assim:
    constructor Create(aOwner:TComponent); reintroduce;

e assim:
    constructor Create(aOwner:TComponent); override;


Me surgiu essa duvida depois que eu estava olhando os fontes de uns componentes e vi o constructor declarado dessas duas formas.

Obrigado.

Renato.


Renato.pavan

Renato.pavan

Curtidas 0

Respostas

Bruno Belchior

Bruno Belchior

28/09/2006

Um método declarado como reintroduce, so será executado em um objeto da classe que o declarou, ele não entra no escopo de polimorfismo. Uma vez que ele disse que não quer herdar o que já foi implementado (embora isso seja possível mesmo com reintrodução de código) ´reintroduzindo´ tudo do zero...


GOSTEI 0
Marco Salles

Marco Salles

28/09/2006

Mais algumas considerações:

A directiva overload pode ser usada para qualquer tipo de metodo , seja estatico,dinamido ou Virtual
A directiva reintroduce so pode ser usada se o metodo da classe ancestral tiver marcado como virtual

Alem de permitir a ssinaturas diferentes a directiva overload não oculta as implementaçoes do metodo nos ancestrais , estando assim , diponivel mais uma implementação simultaneamente

A directiva reintoduce [b:c109518f21]oculta[/b:c109518f21] o metodo na classe ancestral

Em outra palavras

TPai = class metodo Virtual; end; Tfilho1 = class(Tpai) metodo(parametros); overload; end; Tfilho2 = class(Tpai) metodo(parametros);reintroduce; end;


var umObjetoFilho1:Tfilho1; UmObjetoFilho2:Tfilho2; begin umObjetoFilho1:=TFilho1.Create; umObjetoFilho2:=Tfilho2.create; umObjetoFilho1.metodo; //metodo executado é o do pai umObjetoFilho1.metodo(parametros); //metodo executado é o do filho1 umObjetoFilho2.metodo(parametros);//metoto executado é o do filho2 umObjetoFilho2.metodo; //não compila ... Esta oculto umObjetoFilho1.Free; umObjetoFilho2.Free;



GOSTEI 0
Renato.pavan

Renato.pavan

28/09/2006

Valeu pessoal, obrigado pelos esclarecimentos.

Renato


GOSTEI 0
POSTAR