Static

Adam Boduch

static - słowo kluczowe języka Delphi

Podobnie jak w przypadku metod prostych (dla przypomnienia: tych, w których deklaracja i definicja jest poprzedzona słowem kluczowym Class), metody opatrzone słowem kluczowym static zapewniają dostęp do klasy bez konieczności wywoływania konstruktora czy odwoływania się do instancji klasy.

Dyrektywa static była nowością w Delphi 8 zapewnioną przez .NET. Metody oznaczone słowem static nie mogą odwołać się do jakiegokolwiek elementu (członka) klasy [#]_ ? nie posiadają więc zmiennej Self. Oto fragment kodu:

type
  TMyClass = class
  public
    class var S : String;
    class procedure SetValue(const Value : String); static;
    class procedure Normal;
  end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  TMyClass.S := 'dane';
  TMyClass.SetValue('Wartość');
end;

{ TMyClass }

class procedure TMyClass.Normal;
begin
 { kod }
end;

class procedure TMyClass.SetValue(const Value: String);
begin
  S := Value;
{ Zmienna S będzie posiadała wartość przekazaną w parametrze ponieważ jest zadeklarowana z użyciem słowa class }
end;

Metoda SetValue jest oznaczona dyrektywą static. Oznacza to, że nie zadeklarowano zmiennej Self i że SetValue nie może odwoływać się do członków klasy TMyClass, jeżeli metody nie są zadeklarowane z użyciem słowa kluczowego Class.

Dodatkowo, metody opatrzone słowem kluczowym static nie mogą być wirtualne ani dynamiczne (w przeciwieństwie do metody prostych, których deklaracja nie jest opatrzona słowem static) ? jak mówi sama nazwa, są to metody statyczne, które nie mogą podlegać procesowi przedefiniowania.

Zobacz też:


.. [#] Chyba, że dane elementy klasy również będą metodami prostymi.

0 komentarzy