Zitat von
Khabarakh:
PS: Bei Listen ist Vererbung unüblich, eine Komposition ist oft einfacher.
In diesem Fall handelt es sich aber nicht um klassische Vererbung, sondern um die Instanziierung(Typisierung?) eines generischen Typs.
Es ist z.B. auch nicht möglich, eine Variable eines generischen Typs zu deklarieren (außer als Feld in einer generische Klasse):
Delphi-Quellcode:
var
List: TObjectList<T>;
läßt sich nicht compilieren.
Damit scheidet eine Komposition schon mal aus.
Man muss sich Generics einfach als Klassen-Vorlagen vorstellen. Erst durch die Bestimmung des oder der variablen Typen wird daraus eine verwendbare herkömmliche Klasse. Mit
Delphi-Quellcode:
type
TNonFoodList = class(TObjectList<TNonFoodList>);
wird implizit eine Klassendeklaration erstellt, bei der alle "T" in TObjectList<T> durch TNonFood ersetzt werden.