Definição de Classes: herança de valores
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
Curtidas 0
Respostas
Massuda
10/10/2007
[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.
GOSTEI 0