POO
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
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
Curtidas 0
Respostas
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
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:
Esse inherited garante que vc está chamando o Create do TComponent, passando como parâmetro o seu ´AOwner´
Espero que fique claro
Ate+
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
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....´
´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
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...
Agora, na TClasse2 você também quer esse método FazAlgo, só que ele tem que fazer algo mais!
Então vc declara:
e na implementação vc faz:
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é+
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