AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TCollection und Vererbung?

Ein Thema von Marco Steinebach · begonnen am 23. Feb 2021 · letzter Beitrag vom 23. Feb 2021
 
Marco Steinebach

Registriert seit: 4. Aug 2006
503 Beiträge
 
Delphi 5 Enterprise
 
#1

TCollection und Vererbung?

  Alt 23. Feb 2021, 16:50
Hallo zusammen,
Ich habe ein Verständnis-Problem und bitte um Hilfe.
Ich habe, als Beispiel:
Code:
TBasicItem = class(TCollectionItem)
  private
    fE1: integer;
    fE2: string;
  public
    property e1: integer read fE1 write fE1;
    property e2: string read fE2 write fE2;
end;
Davon Abgeleitet soll es mehrere Klassen geben, z.B.:
Code:
TAddressItem = class(TBasicCollectionItem)
  private
    fE3: boolean;
  public
    property e3: boolean read fE3 write fE3;
end;
Soweit, so einfach.
In einer Grundklasse, abgeleitet von TCollection, will ich die Methoden speichern, die für alle Nachfahren auch gelten können, und hier wird's bunt, der berühmte Wald, ihr wißt schon.
Code:
TBasicCollection = class(TCollection)
  public
    entries[i: integer]: TBasicCollectionItem read getEntry write setEntry; default;
end;
Muss ich die Entry-Eigenschaft überhaupt definieren, oder hat TCollection schon sowas, und ich hab's nicht gefunden?
Bislang hab ich die passenden Getter und Setter wie folgt deklariert:
Code:
function TBasicCollection.getEntry (i: integer): TBasicCollectionItem;
begin
  result := inherited items[i] as TBasicCollectionItem;
end;

procedure TBasicCollection.setEntry (i: integer; a: TBasicCollectionItem);
begin
  inherited items[i] := a;
end;
So kann ich also mit
c[i] gleich auf ein bestimmtes Item zugreifen.
Was passiert aber nun, wenn ich von TBasicCollection eine weitere Klasse ableite, sagen wir:
Code:
TAddress = class (TBasicCollection)
...
end;
Die hat als Einträge dann lauter TAddressItem. Was passiert jetzt mit meinen Gettern/Settern?
Und swenn meine TBasicCollection eine Methode bekommt, die auf die Entries zugreifen soll, beispielsweise sie speichern, woher weiss dann Delphi, ob nun TAddressItem oder TBasicItem gemeint ist?

Kann mir mal jemand auf die Sprünge helfen, bitte?

Herzlich grüßt
Marco
Marco Steinebach
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz