AGB  ·  Datenschutz  ·  Impressum  







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

Vererbung von TObjectList

Ein Thema von Kishmet · begonnen am 10. Jan 2024 · letzter Beitrag vom 10. Jan 2024
 
Kishmet

Registriert seit: 29. Okt 2020
Ort: Großraum Stuttgart
43 Beiträge
 
Delphi 12 Athens
 
#1

Vererbung von TObjectList

  Alt 10. Jan 2024, 10:07
Guten Morgen zusammen,

ich versuche grade eine Klasse zu vererben, verstehe hier aber wohl gerade etwas nicht so ganz. Vielleicht kann mir jemand auf die Sprünge helfen:

Ich habe diese Base Klasse:
Code:
  TMyDeviceList = class (TGenericSettings)
    strict private
      var
        FList: TObjectList<TMyDeviceListItem>;
    private
      var
        function GetCount: Integer;
        procedure Init; virtual;
    public
      var      
        constructor Create;
    published
      var
        property Count: Integer read GetCount;
  end;

Hier das Create:
Code:
procedure TMyDeviceList.init;
begin
  FList := TObjectList<TMyDeviceListItem>.Create(TRUE);
end;

constructor TMyDeviceList.Create();
begin
  inherited;
  init;
end;

mit der Funktion
Code:
function TMyDeviceList.GetCount: Integer;
begin
  result := FList.Count;
end;
Diese vererbt an:
Code:
  TPCListSettings = class(TMyDeviceList)
    private
      var
        FList: TObjectList<TPCListItem>;
        procedure init; override;
  end;

Implentierte Init:
Code:
procedure TPCListSettings.init;
begin
  FList := TObjectList<TPCListItem>.Create(TRUE);
end;

Wenn ich nun folgendes mache
Code:
  var myCount := PCListSettings.Count;
lande ich aber in der übergeordneten Klasse.

Nun meine Frage: Wieso lande ich mit der Funktion getCount in der FList von TMyDeviceList obwohl ich mich doch in der Klasse TPCListSettings befinde. Das macht für mich nur so Semi sinn. Wenn ich an einer anderen Funktion der Klasse bin, greift er doch auf die Korrekte Liste zu. Sollte die Funktion nicht ebenfalls auf die korrekte Liste zugreifen auch wenn Sie vererbt ist? oder musss ich hier wirklich mit einem override arbeiten und die gleiche Funktion nochmal schreiben? -> Falls ja würde das vererben an dieser Stelle für mich gar keinen Sinn machen und ich muss das alles wieder rausrupfen...

Prinzipiell: Kann ich überhaupt auf Variablen zurückgreifen welche ich in der Klasse welche Erbt redeklariert habe, indem ich Funktionen aus der vererbenden Klasse aufrufe? Oder lande ich hier immer in der Basisklasse und deren Variablen? Irgendwie macht das für mich grade keinen Sinn

Geändert von Kishmet (10. Jan 2024 um 10:17 Uhr)
  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 20:55 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