Apex クラス定義
Apex では、最上位クラス (外部クラスとも呼ぶ) と、クラス内に定義されているクラスである内部クラスの両方を定義できます。内部クラスは、1 つ下のレベルのみです。次に例を示します。
1public class myOuterClass {
2 // Additional myOuterClass code here
3 class myInnerClass {
4 // myInnerClass code here
5 }
6}クラスを定義するには、次を指定します。
- アクセス修飾子:
- 最上位クラスの宣言には、public または global などのアクセス修飾子の 1 つを使用する必要があります。
- 内部クラスの宣言にはアクセス修飾子を使用する必要はありません。
- 省略可能な定義修飾子 (virtual や abstract など)
- 必須: クラス名の前に付ける class キーワード
- 必要に応じて拡張および実装、またはそのいずれか
クラスを定義するには、次の構文を使用します。
1private | public | global
2[virtual | abstract | with sharing | without sharing]
3class ClassName [implements InterfaceNameList] [extends ClassName]
4{
5// The body of the class
6}- private アクセス修飾子は、このクラスがローカルで表示される、つまり、コードのこのセクションのみで表示されることを宣言します。これが内部クラスのデフォルトアクセスです。つまり、内部クラスにアクセス修飾子を指定しない場合、private とみなされます。このキーワードは内部クラスでのみ使用できます。
- public アクセス修飾子は、このクラスがアプリケーションや名前空間で表示されることを宣言します。
- global アクセス修飾子は、このクラスがすべての Apex コードで表示されることを宣言します。webService キーワードで定義されているメソッドを含むすべてのクラスは global として宣言する必要があります。メソッド、または内部クラスを global として宣言した場合、最上位 (外部) クラスも global として宣言する必要があります。
- with sharing および without sharing の各キーワードはこのクラスの共有モードを指定します。詳細は、「with sharing または without sharing キーワードの使用」を参照してください。
- virtual 定義修飾子は、このクラスが拡張や上書きを許可することを宣言します。クラスが virtual として定義されていない場合、override キーワードを使用したメソッドの上書きはできません。
- abstract 定義修飾子は、このクラスに抽象メソッド (署名のみが宣言され、本文が定義されていないメソッド) が含まれることを宣言します。
クラスは複数のインターフェースを実装できますが、既存のクラスを 1 つしか拡張できません。この制限は、Apex が複数の継承をサポートしていないことを意味しています。リストのインターフェース名はカンマで区切られています。インターフェースの詳細は、「インターフェースについて」を参照してください。
メソッドと変数のアクセス修飾子の詳細は、「アクセス修飾子」を参照してください。