Einzelnen Beitrag anzeigen

Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#1

Nachfahr-Klasse sieht private-Member der Vorfahrklasse?

  Alt 7. Okt 2011, 11:32
Delphi-Version: 7
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
  Mit Zitat antworten Zitat