方法是類別的行為單元。在 Delphi 中:
類別定義於 interface 區的 type 區塊,方法實作於 implementation 區。
type
TMyClass = class
procedure MyProc(var X: Integer); // 程序方法
function MyFun(var X: Integer): Integer; // 函式方法
end;
// 實作區
function TMyClass.MyFun(var X: Integer): Integer;
begin
X := X * 2;
Result := X;
end;
procedure TMyClass.MyProc(var X: Integer);
begin
X := X * 2;
end;
var
MyClass: TMyClass;
I: Integer;
begin
MyClass := TMyClass.Create; // 1. 建立實例
try
I := 6;
MyClass.MyProc(I); // 呼叫程序方法
ShowMessage(IntToStr(I)); // 12
I := 6;
I := MyClass.MyFun(I); // 呼叫函式方法
ShowMessage(IntToStr(I)); // 12
finally
MyClass.Free; // 2. 釋放實例
end;
end;
最佳實踐:使用 try...finally 確保釋放,防止記憶體洩漏。
interface 區定義:整個專案可見(需 uses 引用)。implementation 區定義:僅限該單元內部使用。| 特性 | 關鍵字 | 說明 |
|---|---|---|
| 虛擬方法 | virtual | 允許子類別覆寫,支援多態 |
| 覆寫 | override | 子類別重新實作父類別虛擬方法 |
| 動態方法 | dynamic | 節省 VMT 空間,呼叫稍慢 |
| 訊息方法 | message | 處理 Windows 訊息 |
| 類別方法 | class procedure/function | 無需實例即可呼叫(Delphi 2007+) |
| 靜態方法 | static | 不帶 Self,類似全域函式(Delphi 2006+) |
方法是類別行為的封裝。掌握「定義於介面區、實作於實作區、建立呼叫釋放三部曲」,並善用 try...finally 管理生命週期,是 Delphi 物件導向程式設計的基本功。