Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Projektweit prüfen, ob Methode als virtuell (override) im protected steht

  Alt 14. Sep 2016, 08:41
Ich glaube für einen von uns ist es noch zu früh am Morgen.

Wenn es private ist, dann ist es private. Du kannst das aus einer Unterklasse nicht mehr direkt aufrufen, auch nicht durch ein inherited .

Beispiel:
Delphi-Quellcode:
type
   TBase = class
      strict private procedure privateStuff();
   end;

   TSub = class(TBase)
      strict private procedure privateStuff();
      public procedure publicSubStuff();
   end;

{ TSub }

procedure TSub.privateStuff();
begin
   inherited; // Tut nichts
   WriteLn('TSub.privateStuff()');
end;

procedure TSub.publicSubStuff();
begin
   privateStuff();
   WriteLn('TSub.publicStuff()');
end;

{ TBase }

procedure TBase.privateStuff();
begin
   WriteLn('TBase.privateStuff');
end;

begin
   TSub.Create().publicSubStuff();
   readln;
end.
Das siehst du auch daran dass weder die Methode TBase.privateStuff() noch die Zeile
Code:
inherited; // Tut nichts
im Debugger einen Haltepunkt bekommen.
  Mit Zitat antworten Zitat