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.