1. 程式人生 > 其它 >Delphi 系統[20]關鍵字和保留字 automated、private、protected、public、published - 定義類(或結構、物件)成員的可訪問型別

Delphi 系統[20]關鍵字和保留字 automated、private、protected、public、published - 定義類(或結構、物件)成員的可訪問型別

Delphi 系統[20]關鍵字和保留字 automated、private、protected、public、published -定義類(或結構、物件)成員的可訪問型別

1、定義:

  • automated:自動成員,它能夠使程式的版本向下相容。ComObj單元內的成員及其例項不能使用automated訪問區分符。不能用於結構型別和物件型別。
  • private:私有成員,只有類所在單元可以訪問。
  • protected:保護成員,只有子類可以訪問,不能用於結構型別。
  • public:公開成員,可以在任何地方被訪問。
  • published:釋出成員,可以在執行時被訪問,不能用於結構型別和物件型別。

2、示例:

type 
  TMyObject = class 
  automated 
    { 這裡放置自動型別的成員 } 
  private 
    { 這裡放置私有型別的成員 } 
  protected 
    { 這裡放置保護型別的成員 } 
  public 
    { 這裡放置公開型別的成員 } 
  published 
    { 這裡放置釋出型別的成員 } 
  end; 
 
 
{ 關於 automated } 
type 
  TMyObject = class 
  automated 
    Str:WideString; 
  end; 
 
{ 如果在程式的下一個版本中, 將 Str 修改成 } 
type 
  TMyObject = class 
  automated 
    Str: AnsiString; 
  end; 
 
{ 則新版本的 Str 變數能夠接受舊版本的 WideString 型資料,並自動轉換成AnsiString。 在實際開發中,如果沒有特殊的需要,一般不用 automated 訪問區分符。} 

3、關於automated 成員的一些說明:

  • automated 成員與public成員具有相同的可見性。區別在於,automated 型別資訊(自動化伺服器所需)是為 automated成員生成的。
  • automated 成員通常只出現在Windows類中,不建議用於Linux程式設計。automated 保留字是為了向後相容而保留的。ComObj單元中的TAutoObject類不使用automated。
  • 以下限制適用於宣告為 automated的方法和屬性:automated 方法或屬性的宣告可以包含dispid指令。在dispid指令中指定已使用的ID會導致錯誤。
    • 所有屬性、陣列屬性引數、方法引數和函式結果的型別都必須是自動的。可自動執行的型別有Byte, Currency, Real, Double, Longint, Integer, Single, Smallint, AnsiString, WideString, TDateTime, Variant, OleVariant, WordBool,和所有interface 介面型別。
    • 方法宣告必須使用預設的暫存器呼叫約定。它們可以是虛擬的,但不是動態的。
    • 屬性宣告可以包括訪問說明符(讀和寫),但不允許使用其他說明符(index索引、stored儲存、default預設和nodefault)。訪問說明符必須列出使用預設暫存器呼叫約定的方法識別符號;不允許使用欄位識別符號。
    • 屬性宣告必須指定型別。不允許屬性重寫。
  • 在Windows上,此指令後面必須跟一個整數常量,該常量指定成員的自動分派ID。否則,編譯器會自動為成員分配一個排程ID,該ID比類及其祖先中任何方法或屬性使用的最大排程ID大一個。有關 Automation自動化的詳細資訊(僅在Windows上),請參見Automation自動化物件。

  

建立時間:2021.08.12  更新時間:

部落格園 滔Roy https://www.cnblogs.com/guorongtao 希望內容對你所有幫助,謝謝!