Thema: Delphi Wie OOP lernen ?

Einzelnen Beitrag anzeigen

Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: Wie OOP lernen ?

  Alt 5. Nov 2005, 12:46
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
Michael
  Mit Zitat antworten Zitat