アクセス修飾子
Apex では、メソッドや変数の定義で private、protected、public、global の各アクセス修飾子を使用できます。
トリガーや匿名ブロックでもアクセス修飾子を使用できますが、Apex の狭い範囲では有用ではありません。たとえば、匿名ブロックでメソッドを global として宣言しても、メソッドをそのコードの外からコールすることはできません。
クラスアクセス修飾子の詳細は、「Apex クラス定義」を参照してください。
デフォルトでは、メソッドや変数は「定義されたクラス内でのみ」 Apex コードに表示されます。メソッドや変数を同じアプリケーション名前空間の他のクラスで使用できるようにするには、明示的に public として指定します (「名前空間プレフィックス」を参照)。次のアクセス修飾子を使用して表示のレベルを変更できます。
- private
- このアクセス修飾子はデフォルトです。つまり、メソッドまたは変数は、それが定義されている Apex クラス内でのみアクセス可能です。アクセス修飾子を指定しない場合、メソッドや変数は private となります。
- protected
- メソッドや変数は、定義する Apex クラスのすべての内部クラス、および定義する Apex クラスを拡張するクラスから参照できます。このアクセス修飾子は、インスタンスメソッドやメンバー変数でのみ利用できます。この設定は、Java と同様にデフォルト (private) 設定よりも厳密な権限付与が必要であることに注意してください。
- public
- これは、特定のパッケージ内のすべての Apex がメソッドや変数にアクセスできることを意味します。名前空間を共有するすべての第二世代 (2GP) 管理パッケージでアクセスできるようにするには、public を @NamespaceAccessible アノテーションと一緒に使用します。名前空間のないパッケージで public アクセス修飾子を使用すると、Apex コードは暗黙的に @NamespaceAccessible として表示されます。
- 名前空間ベースの参照についての詳細は、「第二世代パッケージでの Apex クラスの名前空間ベースの参照」を参照してください。
- global
- メソッドや変数は、同じアプリケーションの Apex コードだけでなく、クラスへのアクセス権のあるすべての Apex コードで使用できます。アプリケーション外 (SOAP API 内、または別の Apex コード) から参照されるすべてのメソッドはこのアクセス修飾子を使用する必要があります。メソッドまたは変数を global として宣言する場合、それを含むクラスも global として宣言する必要があります。
private、protected、public、global アクセス修飾子を使用するには、次の構文に従います。
1[(none)|private|protected|public|global] declaration次に例を示します。
1// private variable s1
2private string s1 = '1';
3
4// public method getsz()
5public string getsz() {
6 ...
7}