Programowanie w języku Delphi » .NET

Static

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 1 ? 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ż:


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