クラスでのインタフェースの実装 

インタフェースは、クラス定義の拡張であり、オブジェクトに対して一律の接点を提供します。 クラスと異なり、インタフェースはインスタンス化できません。 代わりに、クラスがインタフェースを実装します。この時クラスは、そのインタフェースのメソッドをすべて実装します。 このため、メソッドをアドレスするときには クラス参照インタフェース参照のどちらも使用することができます。

実装するインタフェースメソッドのコードが異なるため、各クラスのインタフェースの実装方法は異なります。 このように、インタフェースは ABAP オブジェクトの 多態性の基礎となります。

前提条件

クラスビルダでクラスとインタフェースの両方が登録されている必要があります。

手順

  1. クラスビルダで、クラスエディタを変更モードで開きます。
  2. インタフェースを選択します。
  3. インタフェースをクラスに追加するため、以下の情報を入力します。

    - インタフェース
    インタフェース名です。
    Enter を押すと、クラスライブラリにこのインタフェースがすでに登録されていることがチェックされます。 すべてのインタフェースの一覧を表示するには、入力可能値ヘルプを使用します。

    モデル化のみ
    このオプションを選択すると、インタフェースはクラスプールに格納されません。
    実行時には、このインタフェースおよびそのコンポーネントにアクセスすることができません。
  4. 他のすべてのインタフェースについても、ステップ 1 3 を繰り返します。

    次に例を示します。


  5. インタフェースがネストしている場合には、ユーザからの入力内容のチェック後に、階層内の全コンポーネントインタフェースが表示されます。
  6. エントリを保存します。

 

結果

1 つまたは複数のインタフェースをクラスのコンポーネントに追加しました。インタフェースは、クラスプール内のクラスの定義部の INTERFACES 命令の下に列挙されています。

クラス宣言の定義部分のインタフェースに列挙されている全メソッドを実装する必要があります。 追加情報については、 メソッドの実装を参照してください。

インタフェースで定義されたコンポーネント ( 属性、メソッドおよびイベント ) が、クラスの <interface name> <component name> に記述されます。 これにより、クラスコンポーネントの名称の重複定義を防ぐことができます。