Hallo,
ich arbeite mich zurzeit durch das Thema "Klassen" in den
Wikibooks. Nun bin ich auf eine unklare Stelle gestoßen:
Zitat von
Wikibooks:
Die einfachste Klasse entspricht in ihrem Aufbau einem Record:
Delphi-Quellcode:
program Klassentest;
type
TMyRec = record
EinByte: Byte;
EinString: string;
end;
TMyClass = class
FEinByte: Byte;
FEinString: string;
end;
var
MyRec: TMyRec;
MyClass: TMyClass;
begin
MyRec.EinByte := 15;
MyClass := TMyClass.Create;
MyClass.FEinString := 'Hallo Welt!';
MyClass.Free; // bzw. MyClass.Destroy;
end.
[...] Im oben gezeigten Beispiel kann auf die Felder wie bei einem Record zugegriffen werden. Dies sollte man unter allen Umständen vermeiden!
Nun habe ich vor die Felder der Klasse das Schlüsselwort private gesetzt:
Delphi-Quellcode:
type
TMyClass = class
private
FEinByte: Byte;
FEinString: string;
end;
var
MyClass: TMyClass;
procedure AendereKlassenVariable();
begin
MyClass.FEinString := 'Hallo, Spanky!';
end;
begin
MyClass := TMyClass.Create;
MyClass.FEinString := 'Hallo!';
AendereKlassenVariable();
Writeln(MyClass.FeinString);
MyClass.Free;
Readln;
end.
Zitat von
Wikibooks:
private - auf diese Daten kann außerhalb der Klasse nicht zugegriffen werden
Wo ist denn "außerhalb der Klasse"? Wenn ich mit der Prozedur AendereKlassenVariable() von "außerhalb" das Feld ändern möchte, wird es trotzdem verändert. Es wird "Hallo, Spanky!" ausgegeben.