Strict protected

strict protected - konstrukcja języka Delphi

Konstrukcja strict private związane jest z tematyką programowania obiektowego, a konkretnie hermetyzacją. Metody czy pola umieszczone w sekcji strict protected są określone jako ściśle chronione, dostęp do nich z poziomu innej klasy jest niemożliwy, chyba że z poziomu klasy potomnej.


Konstrukcja ta dostępna jest jedynie w Delphi 8 i Delphi 2005

type
  TMain = class
    strict private
      procedure Main;
  end;

var
  Main: TMain;
begin
  Main := TMain.Create;
  Main.Main// <-- tu jest błąd
end


Powyższy przykład pokazuje niemożność uzyskania dostępu do metody Main z klasy TMoja. Kompilator zgłosi błąd: [Error] WinForm2.pas(101): Cannot access protected symbol TMoja.Main. Wszystko dzięki temu, że metoda Main znalazła się w sekcji strict protected, do której dostęp spoza klasy jest zabroniony.

Sekcja Protected oraz strict protected różni się tym, iż metody zadeklarowane w tej pierwszej są widoczne na zewnątrz klasy, lecz jedynie w obrębie modułu, w jakim znajduje się klasa. Spójrz na poniższy kod:

program Foo;

{$APPTYPE CONSOLE}

type
  TMain = class
    strict protected
      procedure Main;
  end;

  TMainChild = class(TMain)
  public
    procedure Bar;
  end;


procedure TMain.Main;
begin

end;

procedure TMainChild.Bar;
begin
  Main;
end;

var
  Main : TMainChild;
begin
  Main := TMainChild.Create;
  Main.Bar;
  Main.Free;
end.


W tym wypadku metoda Main z klasy TMain mimo, iż nie jest widoczna na zewnątrz klasy - jest widoczna dla klasy potomnej - TMainChild.

Nie można używać słowa kluczowego strict w połączeniu z public albo z published. Taki błąd spowoduje wyświetlenie komunikatu: [Error] WinForm2.pas(93): PRIVATE or PROTECTED expected.

Poziomy strict private oraz strict protected zostały wprowadzone ze względu na przystosowanie Delphi do specyfikacji CLS. Programując aplikacje działające dla Win32 w Delphi 2005, projektant także może używać tych poziomów dostępu.

Zobacz też:

 
Informacje
Ostatnia modyfikacja 24-01-2006 17:28 Ostatni autor Adam Boduch
Ilość wyświetleń 6731 Wersja 1
Komentarz

Katalog
Copyright © 2000-2006 by Coyote Group 0.9.3-pre3
Czas generowania strony: 0.0439 sek. (zapytań SQL: 9)