Delphi - cual e la diferencia ?

 
Vista:

cual e la diferencia ?

Publicado por Res (5 intervenciones) el 15/11/2002 01:15:19
hola, me gustaria saber cual es la diferencia entre
inherited;
y inherited Create;

porque eso lo veo cuando estoy hacidendo uan classe
segun puedo usar inherited; en ves de poner inherited Create;
en un constructor, destructor, etc.
gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:cual e la diferencia ?

Publicado por Ernesto D'Spirito (706 intervenciones) el 15/11/2002 05:10:51
Verás, "inherited" solito llama al método del ancestro con igual nombre y tipo de parámetros que el método actual, mientras que "inherited Método[(parámetros)]" llama a un método específico, que no necesariamente tiene el mismo nombre y parámetros que que el método actual. Ejemplo:

type
TBase = class
FCampo: integer;
public
constructor Create; overload;
constructor Create(x: integer); overload;
end;

TDerivada = class(TBase)
public
constructor Create(z: integer);
end;

constructor TBase.Create;
begin
FCampo := 0;
end;

constructor TBase.Create(x: integer);
begin
FCampo := x;
end;

constructor TDerivada.Create(z: integer);
begin
inherited Create;
end;

En TDerivada.Create llamamos a "inherited Create;". Como fuimos explícitos, se llamará al método TBase.Create que no recibe parámetros. Si fuese el caso que TBase no tuviera un método así, se buscará en su ancestro, es decir que en este ejemplo se ejecutaría TObject.Create.

Si en TDerivada.Create hubiéramos invcado sólo a "inherited;" entonces se llamará a TBase.Create(x: integer), pues es el método ancestral que coincide en nombre y tipo de parámetros que el procedicmiento actual (TDerivada.Create(z: integer)). Se pasará el valor del parámetro "z" como el valor del parámetro "x" (en la llamada de ejemplo, el valor es 2).

Ernesto D'Spirito
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar