マンガで分かる 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]

クロクロ・ショップ
特殊な技術書多数あります
レトロ風RPG フルスクラッチ開発 全コード
レトロゲーム風RPGの全コードを掲載して解説した本
HTML5とJavaScriptで作る 落ち物パズルゲーム 全コード
『テトリス』や『ぷよぷよ』に類似した落ち物パズルゲームの全コードを掲載して解説した本
JavaScriptでリバーシゲームをつくろう
ライブラリを使わずに全コードを書いて、リバーシゲームを作るまでを徹底解説
ワールドマップ自動生成読本
二次元ゲームのワールドマップを自動生成するための本
レトロゲームファクトリー
過去のゲームを最新機に移植する会社のお仕事小説(新潮社)
顔貌売人 ハッカー探偵 鹿敷堂桂馬
プログラマーが探偵役のエンタメ・ミステリー第2弾 最先端の情報犯罪に安藤と鹿敷堂が挑みます(文藝春秋)
裏切りのプログラム ハッカー探偵 鹿敷堂桂馬
プログラマー鹿敷堂桂馬が、女性社長の安藤裕美と共に、IT業界で起きた事件に挑む。2016年の松本清張賞の最終候補作(文藝春秋)
×