Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #8  
Antiguo 17-11-2004
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 24
andres1569 Va por buen camino
Cita:
Empezado por Neftali
No acabo de entender qué significa ésta frase:
"...Lo prohibitivo es llamar a métodos no de clase desde un método de clase"
Me refiero a llamadas directas a métodos no de clase, es decir sin mediar ninguna instancia de por medio; en el ejemplo que pones es perfectamente legal puesto que creas una variable local F y llamas a algunos de sus métodos, pero en dicho caso puedes llamar a dichos métodos, sean de clase o no, porque los llamas a través de una instancia de la clase (F).

El ámbito (private, protected, public ... etc), tal como dices, no importa en este asunto, es algo colateral.

A todo esto, los constructores son por naturaleza métodos de clase, la misma forma en que creamos objetos así lo indica:

MiObjeto := TMiObjeto.Create; // se comporta como un método de clase

por lo que dentro de un método de clase se puede llamar perfectamente a Create o a cualquier otro constructor.

Lo que sería ilegal es incluir dentro de ese método de clase una llamada directa a un método no de clase, siguiendo tu ejemplo:

Código Delphi [-]
class procedure TForm2.Crear;
var
  F:TForm2;
begin
  F := TForm2.Create(nil);
  F.Inicializar;   // correcto, accedemos a través de una instancia
  Inicializar;  // incorrecto; es una llamada directa
  F.Free;
end;

La inclusión de una llamada directa a un método no de clase aquí genera el siguiente error en Delphi:

"This form of method call only allowed for class methods".

Espero haberme explicado ahora mejor,

Saludos
__________________
Guía de Estilo
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 10:18:37.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi