B greift in der der
Unit "extern" auf eine Instanz von B zu, wo B deklariert ist, also hat es die
unit-lokalen Rechte, wo alles Lokale wie "public" ist (außer bei Strict).
B greift auch "extern" auf eine Instanz von B zu, wo B aber nicht deklariert ist, also hat es die "realen" Rechte, wo es natürlich Protected ist.
Delphi-Quellcode:
type
TEditAccess = class(TEdit);
TEditAccess(EineEditInstanz).EineProtectedMethode;
Wie DeddyH schon sagte:
Wenn du direkt auf diese Methode zureifst (
Self.DoStuff
), dann siehst du es mit den
inneren Rechten der eigenen Klasse, wo es Protected ist, also für dich immer wie public.
Du greifst aber
extern auf die Funktion einer "anderen" Instanz drauf zu.
Mit
strict protected
würde auch B knallen, da damit der
unit-lokale Einfluss gebugfixt wurde.
Innerhalb einer
Unit ist Alles, was dort deklariert wurde, wie public (mit Ausnahme der Strict-Private und Strict-Protected).