W Delfy, metoda to procedura lub funkcja, która wykonuje operację na obiekcie. Metoda klasy to metoda, która działa na odwołanie do klasy zamiast odwołania do obiektu.
Jeśli czytasz między wierszami, przekonasz się, że metody klas są dostępne, nawet jeśli nie utworzyłeś instancji klasy (obiektu).
Metody klasowe vs. Metody obiektowe
Za każdym razem, gdy tworzysz Składnik Delphi dynamicznie, używasz metody klasowej: Konstruktor.
Konstruktor Create jest metodą klasową, w przeciwieństwie do praktycznie wszystkich innych metod, które można napotkać 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 podświetlonymi na czerwono dla jasności:
myCheckbox: = TCheckbox. Utwórz (zero);
W tym przypadku wezwanie do utworzenia poprzedza nazwa klasy i kropka („TCheckbox”). Jest to metoda klasy, powszechnie znana jako konstruktor. Jest to mechanizm, za pomocą którego tworzone są wystąpienia klasy. Wynikiem jest instancja klasy TCheckbox. Te instancje nazywane są obiektami. Porównaj poprzedni wiersz kodu z następującymi:
myCheckbox. Odmalować;
W tym przypadku wywoływana jest metoda Repaint obiektu TCheckbox (dziedziczona z TWinControl). Wywołanie funkcji Repaint poprzedza zmienna obiektowa i kropka („myCheckbox.”).
Metody klas można wywoływać bez wystąpienia klasy (np. „TCheckbox. Stwórz"). Metody klasowe można również wywoływać bezpośrednio z obiektu (np. „MyCheckbox. Nazwa klasy"). Jednak metody obiektowe mogą być wywoływane tylko przez instancję klasy (np. „MyCheckbox. Odśwież ”).
Za kulisami jest konstruktor Utwórz przydzielanie pamięci dla obiektu (i wykonanie dowolnej dodatkowej inicjalizacji określonej przez TCheckbox lub jego przodków).
Eksperymentowanie z własnymi metodami klasowymi
Pomyśl o AboutBox (niestandardowym formularzu „About This Application”). Poniższy kod używa czegoś takiego:
procedura TfrMain.mnuInfoClick (Sender: TObject);Jest to oczywiście bardzo fajny sposób na wykonanie zadania, ale aby ułatwić odczytanie (i zarządzanie) kodu, znacznie bardziej efektywnym byłoby zmienić go na:
zaczynać
AboutBox: = TAboutBox. Utwórz (zero);
próbować
AboutBox. ShowModal;
Wreszcie
AboutBox. Wydanie;
koniec;
koniec;
procedura TfrMain.mnuInfoClick (Sender: TObject);Powyższa linia wywołuje metodę klasy „ShowYourself” klasy TAboutBox. „ShowYourself” musi być oznaczony słowem kluczowym „klasa":
zaczynać
TAboutBox. Pokaż się;
koniec;
procedura klasowa TAboutBox. Pokaż się;
zaczynać
AboutBox: = TAboutBox. Utwórz (zero);
próbować
AboutBox. ShowModal;
Wreszcie
AboutBox. Wydanie;
koniec;
koniec;
O czym należy pamiętać
- Definicja metody klasy musi obejmować klasę słowa zarezerwowanego przed słowem kluczowym procedury lub funkcji, które rozpoczyna definicję.
- Formularz AboutBox nie jest tworzony automatycznie (Opcje projektu).
- Umieść jednostkę AboutBox w klauzuli uses głównego formularza.
- Nie zapomnij zadeklarować procedury w części interfejsu (publicznej) jednostki AboutBox.