Wenn diese gleich heißen, dann ist folgendes möglich.
Du definierst eine Klasse mit einer abstrakten Methode:
Delphi-Quelltext
1: 2: 3: 4:
| type TMyClass = class procedure DoSomething; virtual; abstract; end; |
Virtuell ist das wichtige dabei, dass sie abstrakt ist, bedeutet nur, dass sie keinen Code ausführt.
Nun erstellst du dir ein paar Abkömmlinge der Klasse:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| type TMyFirstSon = class(TMyClass) procedure DoSomething; override; end;
TMySecondSon = class(TMyClass) procedure DoSomething; override; end; [...] |
So, jetzt fülst du dir dein Array:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| var MyArray: Array[0..x] of TMyClass; begin MyArray[0] := TMyFirstSon.Create; MyArray[1] := TMySecondSon.Create; [...] |
Nun kannst du für jedes Array-Element die Methode DoSomething aufrufen, es wird immer der Code ausgeführt, der in der entsprechenden Klasse vereinbart wurde.