拡張クラスの例
クラスの拡張の例を次に示します。Apex クラスのすべての機能を示します。この例で使用されるキーワードや概念は、この章内で詳細に説明します。
このコード例では次を示しています。
- 最上位クラスの定義 (外部クラスとも呼ぶ)
- 最上位クラスの静的変数および静的メソッド、および静的初期化コードブロック
- 最上位クラスのメンバー変数とメソッド
- ユーザ定義のコンストラクタが存在しないクラス。暗黙的で、引数をとらないコンストラクタを含む。
- 最上位クラスのインターフェース定義
- 別のインターフェースを拡張するインターフェース
- 最上位クラス内の内部クラス定義 (1 つ下のレベル)
- メソッド署名の公開バージョンを実装することでインターフェース (つまり、関連付けられているサブインターフェース) を実装するクラス
- 内部クラスコンストラクタの定義と呼び出し
- 内部クラスのメンバー変数と、this キーワード (引数なし) を使用したその変数の参照
- 別のコンストラクタの呼び出しに this キーワード (引数なし) を使用する内部クラスコンストラクタ
- コンストラクタ外 (変数が定義されている箇所と、中括弧 ({}) で囲まれた匿名のブロックの両方) の初期化コード。これらのコードは、Java と同様にファイルに記述されている順序���おりにすべてのコンストラクションと共に実行されます。
- クラスの拡張と抽象クラス
- 基本のクラスメソッドを上書きするメソッド (virtual として宣言する必要がある)
- サブクラスメソッドを上書きするメソッドの override キーワード
- 抽象メソッドと具体的なサブクラスによる実装
- protected アクセス修飾子
- ファーストクラスオブジェクトとしての例外とそのメンバー、メソッド、コンストラクタ
この例では、上記のクラスを他の Apex コードからコールする方法を示します。
このコード例では次を示しています。
- 外部クラスの作成
- 内部クラスの作成と内部インターフェース型の宣言
- インターフェース型として宣言された変数を、インターフェースを実装するクラスのインスタンスに割り当て可能
- そのインターフェースを実装するクラス型にインターフェース変数をキャスト (instanceof 演算子を使用した検証後)