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

Delphi 封裝機制全解析:private、strict private、屬性與資料隱藏實務

     編輯:Delphi

封裝核心目的

封裝旨在隱藏實作細節、保護資料完整性,透過存取權限控制外部對類別內部成員的可見性。

未封裝 vs 已封裝對比

未封裝:公開欄位可隨意存取


TMyClass1 = class
  FName: string;
  FAge: Integer;
end;

外部可直接 `Obj.FAge := 1000`,資料無保護。

基本封裝:private 區塊


TMyClass2 = class
private
  FName: string;
  FAge: Integer;
public
  // 需提供公開方法/屬性供存取
end;

注意:private 在同一單元內仍可見,非完全隔離。

完整封裝:strict private + 屬性


TMyClass3 = class
strict private
  FName: String;
  FAge: Integer;
  procedure SetAge(const Value: Integer);
  procedure SetName(const Value: String);
published
  property Name: String read FName write SetName;
  property Age: Integer read FAge write SetAge;
end;
  • strict private:真正限制存取於類別本身,同單元也不可見(Delphi 2005+)。
  • 屬性:提供受控存取介面,read/write 指定欄位或存取方法。
  • 存取方法:可在其中加入驗證邏輯(如年齡 0~200)。

屬性存取方法實作範例


procedure TMyClass3.SetAge(const Value: Integer);
begin
  if (Value >= 0) and (Value < 200) then
    FAge := Value; // 驗證通過才寫入
end;

procedure TMyClass3.SetName(const Value: String);
begin
  if Value <> '' then
    FName := Value; // 拒絕空白名稱
end;

存取權限層級對照表

關鍵字可見範圍適用版本
private同單元內可見所有版本
strict private僅類別本身Delphi 2005+
protected子類別 + 同單元所有版本
strict protected僅子類別Delphi 2005+
public所有地方所有版本
published所有地方 + RTTI 支援所有版本

總結

善用 strict private 搭配屬性與存取方法,是 Delphi 實現強封裝的標準模式。這不僅保護資料,更讓類別介面清晰、維護容易。

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