Hallo!
Mir ist schon vor einiger Zeit aufgefallen, dass in Delphi (sowohl 5 als auch 7) Nachfahren manchmal, also nicht immer, einige private-Member der Vorfahrklasse sehen können. Ein Beispiel:
Delphi-Quellcode:
type
TBaseClass = class
private
FMember: Integer;
end;
TDescendantClass = class(TBaseClass)
public
procedure DoSomething;
end;
implementation
procedure TDescendantClass.DoSomething;
begin
FMember:= 123; // <-- Hier müsste es krachen, tuts aber nicht
end;
Ist das normal? Ich hab nie absichtlich so programmiert, ist mir nur immer dann aufgefallen wenn Nachfahren sich seltsam verhielten weil ich eigentlich vergessen hatte eine Member im Nachfahren zu erstellen, der Compiler sich aber nicht darüber aufregte. Stattdessen gab es unvorhersehbare Ergebnisse.
Also mir widerspricht das den Sichtbarkeitsregeln. Oder denke ich falsch?
Grüße
Cody