サブクラスで定義されたインスタンス・メソッドは、普通ならサブクラスで利用できる継承されたインスタンス・メソッドを (これら 2 つのメソッドが同じシグニチャーを持っている場合) オーバーライド すると言います。
スーパークラス・インスタンス・メソッド m1 を COBOL サブクラスでオーバーライドするには、スーパークラス・メソッドと名前が同じで、その PROCEDURE DIVISION USING 句 (ある場合) の 仮パラメーターの数およびタイプがスーパークラス・メソッドと同じであるサブクラスでインスタンス・メソッド m1 を定義します。(スーパークラス・メソッドが Java でインプリメントされる場合には、対応する Java パラメーターのデータ型と相互運用可能な仮パラメーターをコーディングする必要があります。) クライアントがサブクラスのインスタンスで m1 を呼び出すとき、スーパークラス・メソッドではなく、サブクラス・メソッドが呼び出されます。
例えば、Account クラスは、その LINKAGE SECTION および PROCEDURE DIVISION ヘッダーが 以下のような、メソッド debit を定義します。
Linkage section. 01 inDebit pic S9(9) binary. Procedure Division using by value inDebit.
CheckingAccount サブクラスを定義し、Account スーパークラスで定義された debit メソッドをオーバーライドする debit メソッドをそれに持たす場合には、pic S9(9) binary として指定された入力パラメーターを必ず 1 つ持つサブクラス・メソッドを定義します。クライアントが、CheckingAccount インスタンスへの オブジェクト参照を使用して、debit を呼び出すと、CheckingAccount debit メソッド (Account スーパークラス内の debit メソッドではなく) が呼び出されます。
メソッド戻り値の有無および PROCEDURE DIVISION RETURNING 句 (ある場合) で使われる戻り値のデータ型は、サブクラス・インスタンス・メソッドとオーバーライドした スーパークラス・インスタンス・メソッドにおいて同一でなければなりません。
インスタンス・メソッドは、COBOL スーパークラスのファクトリー・メソッドを オーバーライドしてはならないし、Java スーパークラスの静的メソッドをオーバーライドすることもできません。
関連タスク
クラス・インスタンス・メソッド定義用の PROCEDURE DIVISION
COBOL および Java での相互運用可能なデータ型のコーディング
メソッドの呼び出し (INVOKE)
オーバーライドされたスーパークラス・メソッドの呼び出し
サブクラスの定義
ファクトリー・メソッドまたは静的メソッドの隠蔽
関連参照
継承、オーバーライド、および隠蔽 (「Java 言語仕様」)