ときおりクラス内で、現行クラスで定義された同じシグニチャーを持つメソッドを呼び出す代わりに、オーバーライドされたスーパークラス・メソッドを呼び出さなければならないことがあります。
例えば、CheckingAccount クラスが、その即時スーパークラス Account に 定義されている debit インスタンス・メソッドをオーバーライドすると想定します。次のステートメントをコーディングして、CheckingAccount クラスのメソッド内で Account の debit メソッドを呼び出すことができます。
Invoke Super “debit” Using By Value amount.
debit メソッドのシグニチャーに一致するように、amount を PIC S9(9) BINARY として定義します。
CheckingAccount クラスは、Account クラスに定義されている print メソッドをオーバーライドします。print メソッドには 仮パラメーターがありません。したがって、CheckingAccount クラス内のメソッドは、次のステートメントでスーパークラス print メソッドを呼び出すことができます。
Invoke Super “print”.
キーワード SUPER が示しているのは、呼び出す対象は、現行クラスのメソッドではなく、スーパークラス・メソッドであることです。 (SUPER は、現在実行中のメソッドの起動に使用されているオブジェクトへの暗黙の参照です。)
関連タスク
インスタンス・メソッドのオーバーライド
関連参照
INVOKE ステートメント
(「COBOL for Windows 言語解説書」)