Apex では、最上位クラス (外部クラスとも呼ぶ
クラス内に定義されているクラスである内部クラスの両方を定義できます
内部クラスの宣言にはアクセス修飾子を使用する必要はありません。
これが内部クラスのデフォルトアクセスです。つまり、内部クラスにア
クセス修飾子を指定しない場合、private とみなされます。
global アクセス修飾子は、このクラスがすべての Apex コードで表示されることを宣言します。webservice
キーワードで定義されているメソッドを含むすべてのクラスはglobal として宣言する必要があります。
with sharing およびwithout sharing の各キーワードはこのクラスの共有モードを指定します。
virtual 定義修飾子は、このクラスが拡張や上書きを許可することを宣言します。クラスがvirtual と
して定義されていない場合、override キーワードを使用したメソッドの上書きはできません。
abstract 定義修飾子は、このクラスに抽象メソッド (署名のみが宣言され、本文が定義されていないメ
ソッド) が含まれることを宣言します。
override を使用して上書きできるのは、virtual またはabstract として定義されたクラスの
メソッドのみです。
プリミティブデータ型引数は値によってメソッド引数を渡す
sObject などの非プリミティブデータ型引数は、参照によってメソッドに渡されます。
インターフェースメソッドにはアクセス修飾子はありません。常に global となります。
Apex では、静的メソッド、変数、および初期化コードを設定できます。ただし、Apex クラスを静的にするこ
とはできません。
• クラスに関連付けられる。
• 外部クラスでのみ許可される。
• クラスが読み込まれたときにのみ初期化される。
• Visualforce ページのビューステートの一部として転送されない。
静的初期化ブロックは、そのブロックを含むクラスにア
クセスする回数に関係なく、1 回のみ実行されます。
super キーワード使用のベストプラクティス
• virtual クラスまたはabstract クラスから拡張されるクラスのみがsuper を使用できます。
• override キーワードで指定されているメソッドでのみsuper を使用できます。
来源:https://www.cnblogs.com/dlywang0411/p/11535267.html