Zuerst mal danke an alle. Meine Fragen sind zu den Punkten soweit geklärt.
Aber eine komische Kleinigkeit ist mir aufgefallen die eigentlich nicht sein sollte.
Hier eine Klasse und eine in einer exta
Unit abgeleitete Klasse
Delphi-Quellcode:
//==== UNIT1 ====
type
TMyClass = class
protected
fCreated: TDateTime;
//function getCreated: TDateTime; //mal protected, mal public
public
constructor Create();
function getCreated: TDateTime; //mal protected, mal public
end;
constructor TMyClass.Create();
begin
fCreated := now;
end;
function TMyClass.getCreated: TDateTime;
begin
result := fCreated;
end;
Delphi-Quellcode:
//==== UNIT2 ====
type
TMyClass3 = class(TMyClass)
public
constructor Create();
end;
constructor TMyClass3.Create();
begin
inherited;
fCreated := now;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
MyClass3: TMyClass3;
begin
MyClass3 := TMyClass3.Create;
try
ShowMessage(DateToStr(MyClass3.getCreated));
ShowMessage(DateToStr(MyClass3.fCreated));
except
MyClass3.Free;
end;
end;
fCreated ist in TMyClass in protected, somit unsichtbar für Nutzung. Das stimmt auch soweit die Funktion getCreated in public ist. Verschiebe ich getCreated aber in protected, bietet meine abgeleitete TMyClass3 plötzlich auch fCreated an. Wie kann das sein? Ist doch protected.