POO

Delphi

23/06/2004

Olá Comunidade !!! Após passar um tempinho aprendendo VB ( claro sempre uma carta na manga), voltei, mas voltei a todo o vapor. mais calmo, mais ´maduro´.

Estou em uma empresa que está invenstindo na tecnologia POO. Gostaria de saber se alguém poderia me ajudar em algumas pequenas dúvidas.

O que seria Inherited?

Obrigado desde já....


Julien


Julien

Julien

Curtidas 0

Respostas

Paulo_amorim

Paulo_amorim

23/06/2004

Olá

a palavra reservada [b:d1e232a2d4]inherited[/b:d1e232a2d4] significa que o será executado código do Pai da classe onde este método está sendo implementado. Por exemplo:

Você cria uma classe derivada de TComponent, e cria seu construtor
constructor Create(AOwner: TComponent); override;

Esse override significa que vc já tem um Create no pai desta classe (ou seja, em TComponent). Assim, antes de vc construir sua classe, vc tem que chamar o construtor do TComponent:

constructor Create(AOwner: TComponent);
begin
  inherited;
end;

Esse inherited garante que vc está chamando o Create do TComponent, passando como parâmetro o seu ´AOwner´

If inherited is followed by a method identifier, it represents a normal method call, except that the search for the method begins with the immediate ancestor of the enclosing method’s class. For example, when inherited Create(...); occurs in the definition of a method, it calls the inherited Create. When inherited has no identifier after it, it refers to the inherited method with the same name as the enclosing method. In this case, inherited can appear with or without parameters; if no parameters are specified, it passes to the inherited method the same parameters with which the enclosing method was called


Espero que fique claro
Ate+


GOSTEI 0
Julien

Julien

23/06/2004

é, mais ou menos.... poderia explicar novamente esta parte?

´a palavra reservada inherited significa que o será executado código do Pai da classe onde este método está sendo implementado....´


GOSTEI 0
Paulo_amorim

Paulo_amorim

23/06/2004

Olá

Suponhamos que vc tem uma classe TClasse1 e uma TClasse2, filha de TClasse1

vc cria o método [i:23b8a00e46]FazAlgo[/i:23b8a00e46] na TClasse1...
procedure TClasse1.FazAlgo;
begin
  //aqui ele faz uma coisa qualquer, chamemos de AAA
end;


Agora, na TClasse2 você também quer esse método FazAlgo, só que ele tem que fazer algo mais!
Então vc declara:
procedure FazAlgo; override;


e na implementação vc faz:
procedure TClasse2.FazAlgo;
begin
  inherited;

  //faz MAIS ALGUMA coisa, chamemos de BBB
end;


Aqui está a diferença: se vc não tivesse colocado o [i:23b8a00e46]inherited[/i:23b8a00e46] no FazAlgo, ele soh executaria ´BBB´; como vc colocou o inherited, ele faz primeiro ´AAA´ e depois ´BBB´

Espero que ajude
Até+


GOSTEI 0
POSTAR