Į Delfi, metodas yra procedūra ar funkcija, kuria atliekama objekto operacija. Klasės metodas yra metodas, kuris veikia klasės nuoroda, o ne objekto nuoroda.
Jei skaitysite tarp eilučių, pamatysite, kad klasės metodai yra prieinami net tada, kai dar nesukūrėte klasės (objekto) egzemplioriaus.
Klasės metodai vs. Objekto metodai
Kiekvieną kartą kurdami „Delphi“ komponentas dinamiškai, jūs naudojate klasės metodą: konstruktorius.
Sukurti konstruktorių yra klasės metodas, priešingai nei praktiškai visi kiti metodai, su kuriais susidursite programuodami „Delphi“, kurie yra objektų metodai. Klasės metodas yra klasės metodas, ir atitinkamai, objekto metodas yra metodas, kurį galima pavadinti klasės egzemplioriumi. Tai geriausiai iliustruoja pavyzdys, kurio aiškumo dėka klasės ir objektai pažymėti raudonai:
„myCheckbox“: = „TCheckbox“. Sukurti (nulis);
Čia prieš kvietimą kurti yra klasės pavadinimas ir laikotarpis („TCheckbox“). Tai klasės metodas, paprastai žinomas kaip konstruktorius. Tai yra mechanizmas, kuriuo sukuriami klasės egzemplioriai. Rezultatas yra „TCheckbox“ klasės egzempliorius. Šie egzemplioriai vadinami objektais. Kontrastuokite ankstesnę kodo eilutę taip:
„myCheckbox“. Perdažyti;
Čia vadinamas „TCheckbox“ objekto (paveldėto iš „TWinControl“) „Repaint“ metodas. Prieš kvietimą perdažyti yra objekto kintamasis ir laikotarpis („myCheckbox“).
Klasės metodai gali būti vadinami be klasės egzemplioriaus (pvz., „TCheckbox“. Sukurti “). Klasių metodus taip pat galima iškviesti tiesiai iš objekto (pvz., „MyCheckbox“. Klasės pavadinimas “). Tačiau objekto metodus gali iškviesti tik klasės egzempliorius (pvz., „MyCheckbox“. Perdažyti “).
Užkulisiuose yra „Sukurti konstruktorių“ skiriant atmintį objektui (ir atliekant bet kokią papildomą inicializaciją, nurodytą „TCheckbox“ ar jos protėvių).
Eksperimentuokite su savo klasės metodais
Pagalvokite apie „AboutBox“ (pasirinktinė „Apie šią paraišką“ forma). Šis kodas naudoja kažką panašaus:
procedūra TfrMain.mnuInfoClick (Siuntėjas: TObject);Tai, be abejo, yra labai gražus būdas atlikti darbą, tačiau norint, kad kodą būtų lengviau perskaityti (ir valdyti), būtų daug efektyviau jį pakeisti į:
prasideda
„AboutBox“: = „TAboutBox“. Sukurti (nulis);
bandyti
Apie „Box“. „ShowModal“;
pagaliau
Apie „Box“. Atleiskite;
galas;
galas;
procedūra TfrMain.mnuInfoClick (Siuntėjas: TObject);Aukščiau pateikta eilutė vadina „ShowYourself“ klasės metodą, kuris yra „TAboutBox“ klasė. „ShowYourself“ turi būti pažymėtas raktiniu žodžiu „klasė":
prasideda
„TAboutBox“. Parodyti save;
galas;
klasės procedūra TAboutBox. Parodyti save;
prasideda
„AboutBox“: = „TAboutBox“. Sukurti (nulis);
bandyti
Apie „Box“. „ShowModal“;
pagaliau
Apie „Box“. Atleiskite;
galas;
galas;
Dalykai, kuriuos reikia atsiminti
- Klasės metodo apibrėžimas turi apimti rezervuotą žodžių klasę prieš procedūrą ar funkcijos raktinį žodį, pradedantį apibrėžimą.
- „AboutBox“ forma nėra automatiškai sukuriama (projekto parinktys).
- Įdėkite „AboutBox“ į pagrindinės formos naudojimo sąlygą.
- Nepamirškite deklaruoti procedūros „AboutBox“ įrenginio sąsajos (viešojoje) dalyje.