Zrozumienie metod klas Delphi
Getty Images / Emilia Manevska
W Delfy , metoda to procedura lub funkcja, która wykonuje operację na obiekcie. Metoda klasy to metoda, która operuje na odwołaniu do klasy, a nie na odwołaniu do obiektu.
Jeśli czytasz między wierszami, odkryjesz, że metody klas są dostępne nawet wtedy, gdy nie utworzyłeś instancji klasy (obiektu).
Metody klasowe a metody obiektowe
Za każdym razem, gdy tworzyszKomponent Delphi dynamicznie, używasz metody klasowej: Konstruktor .
Konstruktor Create jest metodą klasy, w przeciwieństwie do praktycznie wszystkich innych metod, które napotkasz w programowaniu Delphi, które są metodami obiektowymi. Metoda klasy jest metodą klasy i odpowiednio metoda obiektowa jest metodą, która może być wywołana przez instancję klasy. Najlepiej ilustruje to przykład, z klasami i obiektami wyróżnionymi na czerwono dla jasności:
|_+_|
W tym przypadku wywołanie Create jest poprzedzone nazwą klasy i kropką ('TCheckbox.'). Jest to metoda klasy, powszechnie znana jako konstruktor. Jest to mechanizm, za pomocą którego tworzone są instancje klasy. Wynikiem jest instancja klasy TCheckbox. Te instancje nazywane są obiektami. Porównaj poprzedni wiersz kodu z następującym:
|_+_|Tutaj wywoływana jest metoda Repaint obiektu TCheckbox (odziedziczona po TWinControl). Wywołanie Repaint jest poprzedzone zmienną obiektu i kropką ('myCheckbox.').
Metody klas można wywoływać bez wystąpienia klasy (np. „TCheckbox.Create”). Metody klas można również wywoływać bezpośrednio z obiektu (np. „mojePoleWyboru.NazwaKlasy”). Jednak metody obiektowe mogą być wywoływane tylko przez instancję klasy (np. 'myCheckbox.Repaint').
Za kulisami konstruktor Create jest przydzielanie pamięci dla obiektu (i wykonanie dodatkowej inicjalizacji określonej przez TCheckbox lub jego przodków).
Eksperymentowanie z własnymi metodami klasowymi
Pomyśl o AboutBox (niestandardowym formularzu „O tej aplikacji”). Poniższy kod używa czegoś takiego:
|_+_|Powyższy wiersz wywołuje metodę klasy 'ShowYourself' klasy TAboutBox. Pole „Pokaż się” musi być oznaczone słowem kluczowym „ klasa ':
procedura klasy TABoutBox.ShowYourself;
zaczynać
AboutBox:= TABoutBox.Create(nil) ;
próbować
AboutBox.ShowModal;
wreszcie
AboutBox.Release;
koniec;
koniec;
O czym należy pamiętać
- Definicja metody klasy musi zawierać słowo zastrzeżone class przed procedurą lub słowem kluczowym funkcji, które rozpoczyna definicję.
- Formularz AboutBox nie jest tworzony automatycznie (Project-Options).
- Umieść jednostkę AboutBox w klauzuli uses w formularzu głównym.
- Nie zapomnij zadeklarować procedury w części interfejsu (publicznej) jednostki AboutBox.