Bergmann89 - Fr 23.04.10 03:14
Titel: Denkblockade bei Klassenentwicklung
Hey,
ich hab grad n neues Projekt angefangen und hab da grad irgendwie ne Denkblockade. Ich hab ne Klasse (TContainer), die kann Objekte(TBasic) besitzen und muss mit derren Methoden arbeiten. Dann hab ich noch paar Klassen, die von TBasic erben und die Methoden überschreiben (TSpecial). Wie bekomm ich es nun hin, dass wenn ein TContainer-Objekt eine Methode aufruft die Mehtode von TSpecial ausgeführt wird und nicht die von TBasic?
Vlt das Ganze nochma als Quelltext, damit mans besser verstehen kann:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| type TBasic = class procedure Test; end;
TSpecial = class(TBasic) procedure Test; end;
TContainer = class fList: TList; procedure CallAllTests; end;
procedure TBasic.Test; begin ShowMessage('Basic'); end;
procedure TSpecial.Test; begin inherited Test; ShowMessage('Special'); end;
procedure TContainer.CallAllTests; var i: Integer; begin for i := 0 to fList.Count-1 do (fList[i] as TBasic).Test; end; |
Mit diesem Code würde immer nur 'Basic' als Meldung kommen, ich will aber das 'Special' kommt. Geht das irgendwie?
MfG & Thx Bergmann.
Moderiert von
Narses: Topic aus VCL (Visual Component Library) verschoben am Fr 23.04.2010 um 09:28