この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

アクセス修飾子

Apex では、メソッドや変数の定義で privateprotectedpublicglobal の各アクセス修飾子を使用できます。

トリガーや匿名ブロックでもアクセス修飾子を使用できますが、Apex の狭い範囲では有用ではありません。たとえば、匿名ブロックでメソッドを global として宣言しても、メソッドをそのコードの外からコールすることはできません。

クラスアクセス修飾子の詳細は、「Apex クラス定義」を参照してください。

インターフェースで定義されたメソッドには、インターフェースと同じアクセス修飾子 (public または global) が付けられます。詳細は、「インターフェース」を参照してください。

メモ

デフォルトでは、メソッドや変数は「定義されたクラス内でのみ」 Apex コードに表示されます。メソッドや変数を同じアプリケーション名前空間の他のクラスで使用できるようにするには、明示的に public として指定します (「名前空間プレフィックス」を参照)。次のアクセス修飾子を使用して表示のレベルを変更できます。

private
このアクセス修飾子はデフォルトです。つまり、メソッドまたは変数は、それが定義されている Apex クラス内でのみアクセス可能です。アクセス修飾子を指定しない場合、メソッドや変数は private となります。
protected
メソッドや変数は、定義する Apex クラスのすべての内部クラス、および定義する Apex クラスを拡張するクラスから参照できます。このアクセス修飾子は、インスタンスメソッドやメンバー変数でのみ利用できます。この設定は、Java と同様にデフォルト (private) 設定よりも厳密な権限付与が必要であることに注意してください。
public
これは、特定のパッケージ内のすべての Apex がメソッドや変数にアクセスできることを意味します。名前空間を共有するすべての第二世代 (2GP) 管理パッケージでアクセスできるようにするには、public@NamespaceAccessible アノテーションと一緒に使用します。名前空間のないパッケージで public アクセス修飾子を使用すると、Apex コードは暗黙的に @NamespaceAccessible として表示されます。

Apex での public アクセス修飾子は Java の場合とは異なります。アプリケーションの結合を妨げ、各アプリケーションのコードを分離するための措置です。Java で行われるようにメソッドや変数を公開する場合、Apex では global アクセス修飾子を使用する必要があります。

メモ

名前空間ベースの参照についての詳細は、「第二世代パッケージでの Apex クラスの名前空間ベースの参照」を参照してください。
global
メソッドや変数は、同じアプリケーションの Apex コードだけでなく、クラスへのアクセス権のあるすべての Apex コードで使用できます。アプリケーション外 (SOAP API 内、または別の Apex コード) から参照されるすべてのメソッドはこのアクセス修飾子を使用する必要があります。メソッドまたは変数を global として宣言する場合、それを含むクラスも global として宣言する必要があります。

global アクセス修飾子は極力使用しないか、まったく使用しないことをお勧めしています。アプリケーション間の依存関係は維持が困難なためです。

メモ

privateprotectedpublicglobal アクセス修飾子を使用するには、次の構文に従います。

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}