MF 

クラス拡張

クラス拡張を行うと、元のソース コードを変更せずに、オブジェクト COBOL クラスに機能を追加できる。

クラス拡張によってクラスを拡張することと継承を行うことの違いは、クラス拡張が既存のすべて下位クラスに継承されることである。たとえば、クラス A の下位クラスとしてクラス B がある場合 (B INHERITS FROM A)、クラス A の下位クラスとして下位クラス C を生成することによって、クラス A にメソッドを追加できる。ただしその場合、クラス B はクラス A の下位クラスであるため、クラス C のメソッドは継承しない。クラス拡張 X によってクラス A を拡張する場合、実行時の効果はクラス A を変更して再翻訳した場合と同じである。つまり、クラス B はクラス X の追加メソッドをすべて継承する。

一般形式


*

構文規則

  1. 拡張名-1 はクラス名-1 と同じにする必要がある。
  2. END CLASS 見出し内の拡張名-1 は、先行するクラス名段落で指定されている拡張名-1 と同じにする必要がある。
  3. クラス名-1 はクラス管理段落で指定されているクラスの名前にする必要がある。
  4. クラス本体のデータ部には、空のオブジェクト記憶節を含めることもできる。クラス拡張のデータ部には、その他に作業場所節と連絡節のみ指定できる。
  5. 以下の両方の条件に該当する場合にのみ、クラス拡張内の文からクラス名-1 で宣言されているデータを参照できる。
    • クラス名-1 のクラス名段落内に DATA IS PROTECTED 指定または DATA IS RESTRICTED 指定がある。
    • クラス拡張のクラス名段落内に WITH DATA 指定がある。

一般規則

  1. EXTEND 句はクラス拡張を指定する。クラス拡張はオブジェクト クラスにメソッドを追加する。拡張名-1 で指定されたメソッドは、クラス名-1 の既存および新規のすべての下位クラスに継承される。
  2. 実行単位の実行中は、拡張名-1 に対して COBOL の呼び出し文を実行した後に、クラス拡張内のメソッドを呼び出す必要がある。これにより、クラス拡張内のメソッドがオブジェクト指向実行時システムに登録される。