O que vem a ser inherited ??

Delphi

07/05/2005

Ólá pessoal, gostaria de saber o que vem a ser inherited... vejo isso toda hora nos sistemas.. e não sei pra que serve :D


desde ja agradeco


[]s


Titanius

Titanius

Curtidas 0

Respostas

Marco Salles

Marco Salles

07/05/2005

Normalmente existem duas maneiras de Soprepor um método.
a) Substituindo o Método da Classe ancestral Por uma nova versão
b)A Outra maneira  e acrescentar alguns códigos no método ja existente 

:arrow: Neste segundo caso , voce usa a palavra Chave [b:0614653148]Inherited[/b:0614653148]

Vamos ver um exemplo:
Type
 TPai = Class
public
 procedure Mensagem;Virtual;
end;


Procedre TPai.Mensagem;
begin
 Showmessage(´OLA´);
end;


:arrow: Vamos definir agora uma SubClasse Com um método Sopreposto
Type
 TFilha = Class (TPai)
public
 Procedure Mensagem;Overload;
end
;

Podemos sobrepor o Método Mensagem na Classe filha de dois modos diferentes

a) Substituindo o Método da Classe ancestral Por uma nova versão
Procedure TFilha.Mensagem;
begin
Showmessage(´OLA´);
Showmessage(´Apareceu OlA´);
end;


B)acrescentar alguns códigos no método ja existente
Neste segundo caso , voce usa a palavra Chave Inherited
Procedure TFilha.Mensagem;
begin
Inherited; //Chama o Método da Classe pai
Showmessage(´Apareceu OlA´);
end;


E qual a diferença da Chamada dos dois métodos da Calsse filha :?: :?:

var
 obj:TFilha
begin
 obj.Create;
 Obj.Mensagem;
 ObjFree;
end;


:arrow: Na [b:0614653148]execuçaõ [/b:0614653148], aparecerá sempre aparecerá a Mensagem [color=darkred:0614653148][b:0614653148]Ola[/b:0614653148][/color:0614653148] Seguida Da mesagem [color=darkred:0614653148][b:0614653148]Apareceu Ola[/b:0614653148][/color:0614653148]


:arrow: Na execução nenhuma ,voce não ira perceber diferenças...

Na implementação da subclasse , quando voce estiver Sobrepondo este método , usar a palavra Chave Inherited fica mais suave... :wink: Imagine , que o método Mensagem da Classe TPai seje muito Grande

[b:0614653148]Eu não sei , em termos de compilaçõs , se usar a palavra chave Inherite ou copiar todo o método da Classe pai , se ha ganhos , de performace ou no tamanho do executável na geração do código da Subclasse... Uma coisa é certa. Dependendo do tamanho do código , ficar reescrevendo código Quase identicos , parece Burrice[/b:0614653148]


[color=red:0614653148][b:0614653148]Conclusão .. Usando a palavra Inherited , o Método Da Calsse pai é Chamado...[/b:0614653148][/color:0614653148]


GOSTEI 0
Titanius

Titanius

07/05/2005

Valeu pela otima explicacao :D


[]s


GOSTEI 0
POSTAR