Zrozumienie metod klasy Delphi

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:

instagram viewer

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);
zaczynać
AboutBox: = TAboutBox. Utwórz (zero);
próbować
AboutBox. ShowModal;
Wreszcie
AboutBox. Wydanie;
koniec;
koniec;
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:
procedura TfrMain.mnuInfoClick (Sender: TObject);
zaczynać
TAboutBox. Pokaż się;
koniec;
Powyższa linia wywołuje metodę klasy „ShowYourself” klasy TAboutBox. „ShowYourself” musi być oznaczony słowem kluczowym „klasa":
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.
instagram story viewer