Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#12

AW: Reintroduce / Override bei Virtual / Dynamic im Bezug auf OOP - Prinzipien

  Alt 28. Feb 2012, 10:23
Steht man aber nun doch vor dem Problem eine solche Methode doch überschreiben zu müssen, dann wird nicht die Basis-Klasse verändert (Methode als virtual deklarieren), sondern man markiert in der abgeleiteten Klasse diese Methode mit reintroduce .
Einfach nur um zu dokumentieren "ja, ich weiß ich soll die nicht ableiten, aber in diesem speziellen Fall ist aber zwingend notwendig"
Mit Reintroduce erhalte Ich also die Funktion der Basisklasse und die abgeleitete Klasse wird erweitert?

Tpapa(Sohn).say; Mit reintroduce kann ich dann den Sohn als Papa behandeln ohne das er sich noch wie der Sohn verhält, ohne die Papa-Klasse zu ändern und ohne gegen Regeln zu verstoßen.
Nein, du dokumentierst damit nur, dass du ganz bewusst diese Methode überschrieben hast.
Delphi-Quellcode:
TBasis = class
  procedure TuDasImmer;
  procedure TuNormalDasHier; virtual;
end;

TAbleitung = class( TBasis )
  procedure TuNormalDasHier; override;
end;

TAbleitungAusnahme1 = class( TBasis )
  procedure TuDasImmer; // Warnung
end;

TAbleitungAusnahme2 = class( TBasis )
  procedure TuDasImmer; reintroduce;
end;
Es wird alles funktionieren, nur der Compiler gibt eine Warnung aus ... mehr nicht
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (28. Feb 2012 um 10:30 Uhr)
  Mit Zitat antworten Zitat