Also nachdem ich den Thread "
OOP und RPG" gelesen hab, hab ich auch mal alleine was angefangen. So als Grundgerüst finde ichs schon sehr gut. Da ich mit DelphiX arbeite habe ich mal eine Klasse von TImageSprite abgeleitet. Ich wollte jetzt die Create Methode überschreiben weil ich in beim Createn noch das Bild des Sprites direkt übergeben wollte. Nur wenn ich override benutze dann müssen die Parameter bei dem Constructor genauso sein wie die vom Parent. Das wusste ich schon. Früher hab ich dann noch einen Constructor namens TKlasse.ACreate hinzugefügt die dann alle Parameter hatte die ich wollte. Aber das war halt unschön. Und dann habe ich mir mal die
Unit von DelphiX angeschaut wo TSprite definiert ist. Und da ist die Create Methode virtual; Und ich hab mir gedacht : Der Constructor hat auch andere Parameter als der vom normalen TObject und ist damit auch überschrieben. So dann hab ich halt auch ne Klasse abgeleitet von TImageSprite :
Delphi-Quellcode:
type
TRPGSprite = class(TImageSprite)
private
public
constructor Create(AParent: TSprite; SImage: TPictureCollectionItem); virtual;
end;
Zitat:
[Warnung] uOther.pas(11): Methode 'Create' verbirgt virtuelle Methode vom Basistyp 'TImageSprite'
Also erstmal : TObject->TSprite (Create virtual)-> TImageSprite (Create override)-> TRPGSprite (Create virtual)
und dann bekomme ich diese Warnung. Also es funktioniert alles perfekt. Ist die Warnung berechtigt ?
Und ich sehe virtual im Moment als eine flexibles override mit dem ich sogar neue Parameter hinzufügen kann.
Also ich habe jetzt erfahren das man das so machen muss :
Delphi-Quellcode:
type
TRPGSprite = class(TImageSprite)
private
public
constructor Create(AParent: TSprite; SImage: TPictureCollectionItem); reintroduce;
end;
auch wenn ich den Begriff reintroduce noch nie gehört hab - es funktioniert