Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Herencia (https://www.clubdelphi.com/foros/showthread.php?t=39183)

miguel867 12-01-2007 14:34:10

Herencia
 
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

Código Delphi [-]
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

Más herencia
 
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...
Código Delphi [-]
inherited Create(codigo, nombre);

miguel867 12-01-2007 23:08:20

Gracias!!!

Era lo que necesitaba.

Saludos!!!


La franja horaria es GMT +2. Ahora son las 04:11:24.

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