Man denke sich folgende Struktur:
Delphi-Quellcode:
//Unit1:
type
A = Class
protected
procedure DoStuffA;
end;
//Unit2:
type
B = Class(A)
private
FOtherObject : TSomeOtherObject;
public
procedure DoStuffB;
end;
implementation
procedure B.DoStuffB;
begin
FOtherObject.InstanceOfB.DoStuffA;
end;
//Unit3
type
C = class (A)
private
FOtherObject : TSomeOtherObject;
public
procedure DoStuffC;
end;
implementation
procedure C.DoStuffC;
begin
FOtherObject.InstanceOfB.DoStuffA;
end;
//Unit99
type
TSomeOtherObject = Class
public
InstanceOfB : B;
end;
Im Fall der Klasse C spukt der Compiler die Nachricht "Auf protected Symbol A.DoStuffA kann nicht zugegriffen werden".
Im Fall der Klasse B bleibt der Compiler ruhig.
Gibt es hierfür eine sinnvolle Begründung?