首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 物件繼承、作用域、方法覆寫、可視性與 With 陳述句深度解析

     編輯:Delphi

物件導向進階:繼承機制、作用域規則、多型實現與程式碼簡化技巧

2.2.1 物件名稱變更的自動反映

  • Object Inspector 修改 Name 屬性(如 Form1 → ColorBox)
  • 類別宣告自動更新:TColorBox = class(TForm)
  • 變數宣告更新:ColorBox: TColorBox
  • 自動產生事件程序名稱更新:TColorBox.Button1Click
  • 注意:自行撰寫的實作區程式碼不會自動修改,需手動更新引用

2.2.2 繼承資料與方法

  • TForm1 繼承 TForm,擁有視窗所有基礎屬性/方法(大小調整、最大最小化、MDI 介面等)
  • F1 查閱 TForm Properties/Methods 見繼承成員
  • 僅當加入元件/撰寫事件時,TForm1 成為自訂型別
  • VCL 階層:TObject → TComponent → TControl → TWinControl → TCustomForm → TForm
  • TCheckBox 雖非直接繼承 TObject,但透過鏈路擁有所有物件基礎功能

2.2.3 物件作用域

2.2.3.1 作用域規則

  • 宣告於物件宣告區的欄位/屬性/方法,僅在該物件及後代作用域內可見
  • 事件處理程序內存取本物件成員可省略物件前綴:
    Color := clFuchsia;  // 相當於 Form1.Color := clFuchsia
  • 存取其他物件成員需完整限定:Edit1.Color := clLime
  • 跨表單存取:Form2.Edit1.Color := clLime + uses Unit2
  • 作用域延伸至所有後代:TForm 成員在 TForm1 可見
  • 避免與祖先同名宣告(編譯器報「識別符重複定義」)

2.2.3.2 方法覆寫

  • 後代宣告同名方法 → 覆寫祖先實作
  • 用於相同介面不同實作需求
  • Delphi 不建議頻繁覆寫,除非建立新元件
  • 編譯器不發出警告/錯誤

2.2.4 Public/Private 可視性宣告

  • 在 public 區宣告:其他單元可存取
  • 在 private 區宣告:僅本單元可見,外部不可存取(封裝)
  • 程序實作碼置於 implementation 區

2.2.5 存取物件欄位與方法:With 陳述句簡化

// 無 With:重複 ListBox1 前綴
ListBox1.Clear;
ListBox1.MultiSelect := True;
ListBox1.Items.Add('One');
...

// With 陳述句:簡化存取
with ListBox1 do
begin
  Clear;
  MultiSelect := True;
  Items.Add('One');
  Items.Add('Two');
  Items.Add('Three');
  Sorted := True;
  Font.Style := [fsBold];
  Font.Color := clPurple;
  Font.Name := 'Times New Roman';
  ScaleBy(125, 100);
end;
  • with 區塊內所有成員存取預設針對指定物件
  • 巢狀 with 內層優先,需注意陰影效應

深入理解繼承鏈、作用域邊界、可視性封裝與 with 簡化技巧,能撰寫結構清晰、維護容易的 Delphi 物件導向程式碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved