Delphi 系統[20]關鍵字和保留字 automated、private、protected、public、published - 定義類(或結構、物件)成員的可訪問型別
阿新 • • 發佈:2021-08-12
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 希望內容對你所有幫助,謝謝!