Fórum Definição de Classes: herança de valores #347193
10/10/2007
0
Bom dia, senhores(as)!
Há como definir (com diretivas do Delphi) que os campos herdados de uma classe ancestral herdem, também, os valores destes? Ou é preciso, no método Create da classe descendente, atribuir explicitamente estes valores, como no exemplo a seguir?
[b:e4756bd5fa]Ancestral.Create(const pNome: string);
FNome:=pNome;
---
Descendente.Create;
inherited Ancestral.Create; //[b] Deveria herdar também os valores???[/b:e4756bd5fa]
Descendente.Nome:=Ancestral.Nome;[/b] // Ou preciso atribuí-lo?
---
Grato pela atenção.
Henrique
Há como definir (com diretivas do Delphi) que os campos herdados de uma classe ancestral herdem, também, os valores destes? Ou é preciso, no método Create da classe descendente, atribuir explicitamente estes valores, como no exemplo a seguir?
[b:e4756bd5fa]Ancestral.Create(const pNome: string);
FNome:=pNome;
---
Descendente.Create;
inherited Ancestral.Create; //[b] Deveria herdar também os valores???[/b:e4756bd5fa]
Descendente.Nome:=Ancestral.Nome;[/b] // Ou preciso atribuí-lo?
---
Grato pela atenção.
Henrique
José Cordeiro
Curtir tópico
+ 0
Responder
Posts
10/10/2007
Massuda
[quote:abadc6a47e=´José Henrique Cordeiro´]Há como definir (com diretivas do Delphi) que os campos herdados de uma classe ancestral herdem, também, os valores destes? Ou é preciso, no método Create da classe descendente, atribuir explicitamente estes valores, como no exemplo a seguir?[/quote:abadc6a47e]Os campos herdados serão inicializados quando o construtor da classe pai for executado (via inherited). Portanto, não há necessidade de atribuir (novamente) valores aos campos herdados numa classe descendente.
Note que no construtor da classe descendente, [b:abadc6a47e]antes[/b:abadc6a47e] da chamada ao construtor herdado (via inherited) os campos herdados não tem valor simplesmente porque ainda não foram inicializados.
Note que no construtor da classe descendente, [b:abadc6a47e]antes[/b:abadc6a47e] da chamada ao construtor herdado (via inherited) os campos herdados não tem valor simplesmente porque ainda não foram inicializados.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)