PDA

Ver la Versión Completa : Herencia


miguel867
12-01-2007, 14:34:10
Hola amigos,

Soy nuevo en delphi y tengo un problema sobre herencia.
Tengo una clase padre de la cual hereda una clase hija (subclase). En el constructor de la subclase necesito dar valor a algun atributo de la clase padre. Para ello he intentado hacer:

super.atributo_heredado := valor;

o

self.atributo_heredado := valor;
.....

Pero no funiona.

Alguien me puede ayudar?

Saludos y gracias!!!

delphi.com.ar
12-01-2007, 14:49:40
type
TPadre = class
protected
Atributo: Integer;
end;

THijo = class(TPadre)
public
constructor Create;
end;


{ THijo }

constructor THijo.Create;
begin
Atributo := 1;
end;
¿Algo similar a esto estas haciendo?

miguel867
12-01-2007, 14:53:38
gracias!!!

Mi duda ahora es en la clase padre y en la hija tengo dos metodos que se llaman igual.
En el metodo de la hija quiero invocar al metodo del padre... pero tiene argumentos el metodo del padre.
De momento lo que hago es en el metodo de la hija poner la palabra "inherited" xo no sé si es correcto ya que el metodo de la clase padre tiene argumentos. Esos argumentos se los proporciono en la llamada al metodo de la clase hija.

Espero haberme explicado bien. Alguien me puede ayudar?

Saludos!!!

delphi.com.ar
12-01-2007, 15:01:31
Si es correcto o no, tendríamos que analizar la arquitectura... ¿Cómo llamarlo?.. como bien dices utilizando "iherited" para referirnos a la clase "padre".

Saludos!

miguel867
12-01-2007, 15:08:11
En la clase padre tengo este constructor:

constructor cl_Socio.create(codigo: integer; nombre: string);
begin
self.codigo_socio := codigo;
self.nombre := nombre;
self.estado := 'socio1';
end;

En la clase hija tengo este constructor

constructor cl_SNoFiable.create(codigo: integer; nombre: string; fecha: tdate);
begin
inherited; // invocacion al create de la clase padre... NO SÉ SI ESTÁ BIEN
self.fecha := fecha; // atributo de la clase hija
self.estado :='SNF1'; // atributo heredado -> en clase padre es protected
end;

Ahora espero haber aclarado bastante.

Saludos!!!

delphi.com.ar
12-01-2007, 15:31:55
Ahhh...

inherited Create(codigo, nombre);

miguel867
12-01-2007, 23:08:20
Gracias!!!

Era lo que necesitaba.

Saludos!!!