GARANTIR DESCONTO

Fórum Classes Heranças Métodos #347081

06/10/2007

0

suponha

uma classe definida desta forma

TUmaClasse = class(Tedit);

esta classe não acrescenta nenhum método novo e nen subscreve nenhum método existente... Poderíamos acreditar que os métodos
de um objeto istanciados desta classe < TumaClasse > sejam rigorosamente iguais aos métodos de um objeto da classe base

porém estudando um código pude observar que por exemplo :

var
 obj:TUmaClasse;
begin
 obj.RecreateWnd;
....
end;

[b:b6996febf9]Compila Roda etc.....[/b:b6996febf9] e o mesmo método não existe em objetos da classe base...[u:b6996febf9] Ta certo que não teria razão de existir em objetos da classe base,[/u:b6996febf9] pela simples razão de que a chamada [b:b6996febf9]obj.RecreateWnd [/b:b6996febf9]o Faz...

Mas o que me impressiona nisso tudo é ´[b:b6996febf9]fugir[/b:b6996febf9]´ um pouco da lógica da [b:b6996febf9]Herança[/b:b6996febf9], isto é : [b:b6996febf9]estamos Herdando o método RecreateWnd de Quem[/b:b6996febf9] :?: :?:


Marco Salles

Marco Salles

Responder

Posts

06/10/2007

Massuda

RecreateWnd é definida em TWinControl como sendo um método [b:9e2cf34bea]protected[/b:9e2cf34bea].

Delphi tem uma regra estranha com relação à visibilidade dos itens private, protected, public e published.

A princípio, esses especificadores de visibilidade são sempre respeitados com exceção da unit onde a classe é implementada; nesse caso, pouco importa qual o especificador de visibilidade foi usado, todos o conteúdo da classe é visível a qualquer código existente na unit.

E aqui entra a coisa estranha... se numa unit você escreve...
type
  TUmaClasse = class(TOutraClasse);
...dentro dessa unit, pelo que escrevi no parágrafo anterior, qualquer código terá acesso a todos os detalhes de implementação de TUmaClasse, incluindo itens herdados de TOutraClasse, ou seja, dentro dessa unit, é possível acessar itens protegidos (protected) de TOutraClasse a partir de instancias de TUmaClasse ou decódigo dentro de TUmaClasse.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar