マンガで分かる Java入門講座

第9章 クラスとオブジェクト2
9-10. 継承7 インターフェースの実装の仕方

インターフェースを実装して利用する方法を、例を元にして紹介します。

● インターフェースを継承して実装

 インターフェースを継承する際は、extendsではなく「implements」を使います。implementsは、実装という意味です。

 以下、インターフェースを継承して実装した例です。

ソースコード)インターフェースの実例
package sample;

public interface Interface1 {
    public final int N = 1;

    abstract public int getN1();
}

ソースコード)インターフェースを実装したクラス
package sample;

public class SubClass implements Interface1 {
    @Override
    public int getN() {
        return N;
    }
}

● インターフェースを複数実装

 インターフェースは複数実装することが可能です。また、インターフェースを実装するクラスには、スーパークラスを別に設けることもできます。

ソースコード)インターフェースの実例1
package sample;

public interface Interface1 {
    public final int N = 1;

    abstract public int getN1();
}

ソースコード)インターフェースの実例2
package sample;

public interface Interface2 {
    abstract public int getN2();
}

ソースコード)スーパークラス
package sample;

public class SuperClass {
}

ソースコード)スーパークラスを持ち、複数のインターフェースを実装したクラス
package sample;

public class SubClass extends SuperClass
  implements Interface1, Interface2 {
    @Override
    public int getN1() {
        return N;
    }

    @Override
    public int getN2() {
        return N * 2;
    }
}

● リスナー

 インターフェースの仕組みを利用しているものに「リスナー」と呼ばれるものがあります。

 このリスナーは、GUIの部品でよく使われます。GUIの部品には、リスナーを登録するメソッドが用意されています。リスナーを登録しておくと、GUIの部品で何かイベントが起きた時に、登録しておいたリスナーのメソッドが実行されます。

 このリスナーはインターフェースとして用意されています。実際に使う際は、このインターフェースを実装してから利用します。

 また、リスナーはインターフェースですので、様々なクラスに、追加の処理として実装できます。

 以下、リスナーを使った処理の例です。

ソースコード)WindowStateListenerの例
package sample;

import java.awt.event.WindowEvent;
import java.awt.event.WindowStateListener;

import javax.swing.JFrame;

public class Sample extends JFrame
  implements WindowStateListener {
    private static final long serialVersionUID = 1L;

    public Sample() {
        // ウィンドウの閉じ方、位置とサイズ
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 640, 480);

        // ウィンドウ状態リスナーとして自身を設定
        this.addWindowStateListener(this);
    }

    public static void main(String[] args) {
        Sample smpl = new Sample();
        smpl.setVisible(true);    // 表示
    }

    // ウィンドウの状態が変更した時の処理
    @Override
    public void windowStateChanged(WindowEvent e) {
        System.out.println(e);
    }
}

この講座のマンガ部分は「箱人形マンガ(Box Comic) 」で作成しています。
作成:2013/06/04  更新:2015/08/09  [Permalink]