Einzelnen Beitrag anzeigen

hboy

Registriert seit: 16. Jan 2004
364 Beiträge
 
#1

Basisklassenroutine kann nicht auf vererbte Variablen zugreifen?

  Alt 6. Jun 2011, 18:50
Hallo,

entschuldigt die blöde Frage, aber mir scheint hier wirklich etwas grundlegendes entgangen zu sein:
Ausgehend von einer Basisklasse wird an eine weitere Klasse vererbt.

Delphi-Quellcode:
type TBasisKlasse = class
public
  Variable: Boolean;
  function TestVariable: Boolean; virtual;
end;

type TAbgeleiteteKlasse = class(TBasisKlasse)
public
  procedure ModifiziereVariable;
end;

implementation

function TBasisKlasse.TestVariable: Boolean;
begin
  result := Variable;
end;

procedure TAbgeleiteteKlasse.ModifiziereVariable;
begin
  Variable := true;
end;
Nun erzeuge ich eine neue Instanz, lasse die Variable ändern...

Delphi-Quellcode:
var allgemeineVariable : TBasisKlasse;
begin
  allgemeineVariable := TAbgeleiteteKlasse.Create;
  (allgemeineVariable as TAbgeleiteteKlasse).ModifiziereVariable;
  if allgemeineVariable.TestVariable then [...]
und sie ist immer false. Es scheint fast, als ob die Variablen einfach doppelt vorhanden wären und für die Methoden der abgeleiteten Klasse verdeckt. Wenn ich die Testmethode als abstrakt definiere und in der abgeleiteten Klasse ausimplementiere, tut alles wie gewohnt.

Klärt mich da mal bitte kurz auf! Danke schonmal
Power is nothing without TControl
  Mit Zitat antworten Zitat