Ver Mensaje Individual
  #5  
Antiguo 09-02-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
NULL
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 19
seoane Va por buen camino
Ahora si que me perdí

Yo por ejemplo tengo estas 2 clases:
Código Delphi [-]
  TPadre = class
    procedure Vamos;
    procedure Ejecutar; virtual; abstract;
  end;

  THijo = class(TPadre)
    procedure Ejecutar; override;
  end;

// Y las implemento asi
{ TPadre }

procedure TPadre.Vamos;
begin
  Ejecutar;
end;

{ THijo }

procedure THijo.Ejecutar;
begin
  ShowMessage('Hola');
end;

Ahora creamos una instancia de la clase hija y llamamos al procedimiento "Vamos", que pertenece a la clase padre y este a su vez llama al procedimiento "Ejecutar" que esta implementado dentro de la clase hija:
Código Delphi [-]
begin
  with THijo.Create do
  try
    Vamos;
  finally
    Free;
  end;
end;

Según entiendo eso es lo que querías, a menos que lo que quieras es llamar un procedimiento de la clase hija que no este declarado en la clase padre. Eso ya lo veo difícil, de hecho no creo ni que compile. Lo único que se me ocurre es lo siguiente:
Código Delphi [-]
  // Ahora no declaramos el procedimiento del hijo en el padre
  TPadre = class
    procedure Vamos;
  end;

  THijo = class(TPadre)
    procedure Ejecutar;
  end;

// Y en la implementacion hacemos un typecast salvaje
{ TPadre }

procedure TPadre.Vamos;
begin
  THijo(Self).Ejecutar;
end;

{ THijo }

procedure THijo.Ejecutar;
begin
  ShowMessage('Hola');
end;
Esto ultimo no se hasta que punto es correcto, estamos obligando a la clase padre a depender de la hija, esto es contra natura
Responder Con Cita