Vererbungsfrage

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
RugiaArt
Beiträge: 41
Registriert: Do 11. Okt 2012, 18:50
OS, Lazarus, FPC: Win7 (L 1.0.0.2 FPC 2.6.0)
CPU-Target: 32Bit
Wohnort: Rügen
Kontaktdaten:

Vererbungsfrage

Beitrag von RugiaArt »

Hallo,

folgende Situation:

ich habe ein Object:

Code: Alles auswählen

 
 
type
  TObj = class
    public
      Fields:TFPObjectList;
      constructor Create();      
      procedure AddField(_a:string);
      procedure AddFields();
  end;
 
...
 
implementation
 
constructor TObj.Create();
begin
  AddFields();
end;
 
 

und ein anderes Objekt vererbt von "TObj":

Code: Alles auswählen

 
 
type
  TObj_test = class(TObj)
    public     
      procedure AddFields();
  end;
..
implementation
 
procedure TObj_test.AddFields();
begin
  AddField('Feld1');
  AddField('Feld2');
  AddField('Feld3');
end; 
 
 


ich möchte beim Createn von TObj_test die procedure AddFields(); ausführen sodass diese die Felder in Fields reinschreibt. Jedoch wird diese aus dem vererbten Objekt TObj aufgerufen, also die leere Procedure.
gibt es irgendwie eine Möglichkeit die beiden Objekte so zu verbinden dass ich später mehrere instanzen erstellen kann wie zB TObj_test_2, TObj_test_3, TObj_test_4 usw. die alle von Tobj abgeleitet werden aber andere Werte in Fields speichern?


Edit:

im Endeffekt möchte ich folgendes:

Code: Alles auswählen

 
procedure TForm1.Button1Click(Sender: TObject);
begin
  obj_test:=TObj_test.Create();
  //beim Createn werden dann die vordefinierten Felder im TObj_test in obj_test.Fields abgelegt -> Feld1, Feld2 Feld3  .... und dann:
  ShowMessage(IntToStr(obj_test.Fields.Count)); // ->> sollte dann die Anzahl der gespeicherten Felder ausgeben
end; 
 
Zuletzt geändert von RugiaArt am So 14. Sep 2014, 19:02, insgesamt 1-mal geändert.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2805
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Vererbungsfrage

Beitrag von m.fuchs »

So:

Code: Alles auswählen

type
  TObj = class
    public
      Fields:TFPObjectList;
      constructor Create();      
      procedure AddField(_a:string);
      procedure AddFields(); virtual
  end;
 
  (* ... *)
type
  TObj_test = class(TObj)
    public     
      procedure AddFields(); override;
  end;
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

RugiaArt
Beiträge: 41
Registriert: Do 11. Okt 2012, 18:50
OS, Lazarus, FPC: Win7 (L 1.0.0.2 FPC 2.6.0)
CPU-Target: 32Bit
Wohnort: Rügen
Kontaktdaten:

Re: Vererbungsfrage

Beitrag von RugiaArt »

ja genau! Danke!

Antworten