I Delphi är en metod en procedur eller funktion som utför en operation på ett objekt. En klassmetod är en metod som fungerar på en klassreferens istället för en objektreferens.
Om du läser mellan raderna kommer du att upptäcka att klassmetoder är tillgängliga även om du inte har skapat en instans av klassen (objektet).
Varje gång du skapar en Delphi-komponent dynamiskt använder du en klassmetod: konstruktören.
Skapa konstruktören är en klassmetod, till skillnad från praktiskt taget alla andra metoder du kommer att stöta på i Delphi-programmering, som är objektmetoder. En klassmetod är en metod för klassen, och lämpligt nog är en objektmetod en metod som kan kallas av en instans av klassen. Detta illustreras bäst med ett exempel, med klasser och objekt markerade med rött för tydlighet:
myCheckbox: = TCheckbox.Create (noll);
Här föregås samtalet till Skapa klassnamnet och en period ("TCheckbox."). Det är en metod i klassen, allmänt känd som en konstruktör. Detta är den mekanism som skapar instanser av en klass. Resultatet är ett exempel på klassen TCheckbox. Dessa fall kallas objekt. Kontrast den föregående kodraden med följande:
myCheckbox.Repaint;
Här kallas Repaint-metoden för TCheckbox-objektet (ärvt från TWinControl). Samtalet till Repaint föregås av objektvariabeln och en period ("myCheckbox.").
Klassmetoder kan kallas utan en instans av klassen (t.ex. "TCheckbox.Create"). Klassmetoder kan också kallas direkt från ett objekt (t.ex. "myCheckbox.ClassName"). Objektmetoder kan dock endast kallas av en instans av en klass (t.ex. "myCheckbox.Repaint").
Bakom kulisserna fördelar Create-konstruktören minne för objektet (och utför alla ytterligare initialiseringar som anges av TCheckbox eller dess förfäder).
Tänk på AboutBox (ett anpassat formulär "Om den här applikationen"). Följande kod använder något som:
procedur TfrMain.mnuInfoClick (avsändare: TObject);Detta är naturligtvis ett mycket trevligt sätt att göra jobbet, men bara för att göra koden lättare att läsa (och hantera) skulle det vara mycket effektivare att ändra den till:
Börja
AboutBox: = T AboutBox.Create (noll);
Prova
AboutBox.ShowModal;
till sist
AboutBox.Release;
slutet;
slutet;
procedur TfrMain.mnuInfoClick (avsändare: TObject);Ovanstående rad kallar klassmetoden "ShowYourself" i klassen T AboutBox. "ShowYourself" måste markeras med nyckelordet "klass":
Börja
TAboutBox.ShowYourself;
slutet;
klassprocedur T AboutBox.ShowYourself;
Börja
AboutBox: = T AboutBox.Create (noll);
Prova
AboutBox.ShowModal;
till sist
AboutBox.Release;
slutet;
slutet;