Delphi 物件導向提供三種方法類型:靜態、虛擬、動態。理解它們在呼叫機制、記憶體佔用、執行速度與多型支援上的差異,對設計高效、可維護的類別架構至關重要。
virtual 或 dynamic 即為靜態。override 覆寫,若在子類別重新宣告同名靜態方法,屬於「遮蔽」而非覆寫。Boolean)。virtual 關鍵字宣告,子類別用 override 覆寫。Ord(False)=0, Ord(True)=1,屬有序類型。dynamic 宣告,同樣可 override。override 只能用於 virtual/dynamic 方法,會替換 VMT/DMT 中的條目,祖先實作仍保留可透過 inherited 呼叫。override 會造成真正覆蓋(編譯錯誤或警告),新方法完全取代祖先同名方法。| 特性 | 靜態 | 虛擬 | 動態 |
|---|---|---|---|
| 宣告關鍵字 | 無 | virtual | dynamic |
| 綁定時機 | 編譯期 | 執行期 (VMT) | 執行期 (DMT) |
| 多型支援 | 否 | 是 | 是 |
| 記憶體開銷 | 最小 | 較大 (完整 VMT) | 較小 (稀疏 DMT) |
| 呼叫速度 | 最快 | 快 | 較慢 |
| 適用場景 | 工具函式、不需多型 | 核心多型行為 | 大量稀疏覆寫方法 |