Private 宣言、protected 宣言、public 宣言、published 宣言
スコープと限定子 への移動
クラス型宣言は、フィールドやメソッドへのアクセス可能性を制御する 3 つまたは 4 つのセクションで構成することができます。
Type TClassName = Class(TObject) public {public fields} {public methods} protected {protected fields} {protected methods} private {private fields} {private methods} end;
- public セクションでは、アクセス制限のないフィールドやメソッドを宣言します。クラス インスタンスおよび下位クラスでは、これらのフィールドやメソッドにアクセスできます。public メンバは、その所属先クラスにアクセス可能な場所であれば、どこからでもアクセスできます。つまり、クラスの宣言元ユニットからも、そのユニットを使用するあらゆるユニットからもアクセスすることができます。
- protected セクションでは、いくつかのアクセス制限のあるフィールドやメソッドを宣言します。protected メンバは、その所属先クラスが宣言されているユニットの中だけでなく、所属先クラスのあらゆる下位クラスからもアクセスできます(下位クラスのユニットを問いません)。
- private セクションでは、厳しいアクセス制限のあるフィールドやメソッドを宣言します。private メンバは、その宣言元ユニットの中でのみアクセス可能です。private メンバは、多くの場合、クラス内で他の(public または published 可視性の)メソッドやプロパティを実装するのに使用されます。
- TPersistent の下位クラスの場合、published セクションでは、設計時に使用可能なプロパティやイベントを宣言します。published メンバの可視性は public メンバと同じですが、published メンバについては、コンパイラにより実行時型情報が生成されます。published プロパティは、設計時に[オブジェクト インスペクタ]に表示されます。
フィールド、プロパティ、メソッドを宣言すると、その新しいメンバは private セクション、protected セクション、public セクション、published セクションのいずれかに追加され、そのメンバの可視性が決まります。