Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-06-2010
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Cool Uso de inherited y override

Hola a todos
Sera porque lo he usado muy poco, y cuando lo he hecho es en procedimientos ya elaborados, pero aun no entiendo el funcionamiento de inherited y override

Me podrian explicar que hace cada uno, y en que situación es cuando se deben emplear?
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes
Responder Con Cita
  #2  
Antiguo 02-06-2010
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 19
Faust Va por buen camino
Yo tampoco los he usado mucho, de hecho solo últimamente y te comento según mi experiencia:

inherited lo he usado cuando creo descendientes de objetos, ¿qué hace exactamente? cuando creo un descendiente p. ejemplo. de un TThread y requiero que tenga funcionalidad más allá de la clase TThread, por lo que es posible que requiera de un objeto extra auxiliar, p. ej. un TList.

Código Delphi [-]
interface

type
  TMyThread = class(TThread)
  private
    { Private declarations }
    FMaxProcs: Integer;
    FDelay: Integer;
    FProcList: TList;
  public
    constructor Create(Delay, MaxProcs: Integer; AppHandle: THandle); reintroduce; overload;
    destructor Destroy; override;
    procedure KillMe;
  protected
    procedure Execute; override;
  end;

...
...
...

implementation

constructor TMyThread.Create(Delay, MaxProcs: Integer; AppHandle: THandle);
begin
  inherited Create(True);
  FProcsLst:= TList.Create;
  ...
  FDelay:= Delay;
  FMaxProcs:= MaxProcs;
  FAppHandle:= AppHandle;
  Resume
end;

Sobrecargo el Create original del TThread indícándolo con la directiva overload en interface, redefino Create en implementation y la primera línea que pongo es inherited Create(False), lo que hace es heredar o llamar al procedimiento original Create de la clase donde incluso puedo poner parámetros, si pongo solamente inherited, el compilador asume que llamo o heredo el procedimiento del mismo nombre en el que está, despues de crear el objeto ahora si seteo algunas propiedades o hago lo que yo quiera.

En cuanto a override anula el procedimiento de la clase que heredo y lo sobreescribe, en el ejemplo anterior tengo en la definición de la clase Destroy declarado así:

Código Delphi [-]
destructor Destroy; override;

Lo que hago es que el método Destroy de TThread ya no lo puedo usar, pero lo sobreescribo, en implementation tengo esto:

Código Delphi [-]
destructor TMyThread.Destroy;
begin
  FProcsLst.Free;
inherited
end;

Ahora es como si intercambiara el método TThread.Destroy por TMyThread.Destroy, libero el TList que he estado usando y vuelvo a llamar inherited solito, inherited manda a llamar o ejecuta el Destroy de TThread.

Bueno, eso es lo poco que sé, pero si tienes alguna duda tal vez yo u otro compañero del for te ayudaremos.

Saludos
__________________
Herr Heins Faust
Responder Con Cita
Respuesta



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Inherited Paulao Varios 2 11-02-2009 18:17:18
Inherited en C++ jlrbotella C++ Builder 1 05-07-2007 12:24:34
Override evento buildero_d OOP 7 09-02-2007 20:04:08
Override eventos On... lento manu OOP 12 08-10-2005 11:37:31
Inherited en C# kes .NET 2 10-05-2005 11:08:46


La franja horaria es GMT +2. Ahora son las 07:44:33.


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