Okapi Project

interface(いんたーふぇいす)

バージョン
2004 年 01月 05 日 Ver.1.0
作成者
H.Izumi ( Xware )

目的

クラスを抽象化して利用したい!

interfaceってなに?

 

Java では抽象クラスと同じようなものをインターフェイス(interface)を使って表すことが出来ます。インターフェイスを利用するときは、インターフェイスの宣言(declaration)が必要になります。また、インターフェイスを宣言するときは「class」の変わりに「interface」と記述します。

interfaceの説明

interface の書き方

interface インターフェイス名{
    型名 変数名 = 代入式;
    戻り値の型 メソッド名();
}

インターフェイス名
任意のインターフェイス名を記述します。
型名
扱うデータの型(int , String)などを指定する。
変数名
任意の変数名を記述します。
戻り値の型
任意の戻り値の型を記述します。
メソッド名
任意のメソッド名を記述します。

interfaceの使い方

interface の使用例

interface を実装するには「implements」というキーワードが必要になります。
以下が「interface」、「implements」を使用した簡単なプログラムの例です。

interface InterfaceTest {
    //抽象メソッド
    void inTest();
}

以下は上記の「InterfaceTest」クラスを実装したクラスその一です。

class InTest1 implements InterfaceTest {
    private String inTest1;

    public InTest1(String str) {
        this.inTest1 = str;
    }
    //抽象メソッド
    public void inTest() {
        System.out.println("InTest1クラスです。");
        System.out.println(inTest1);
    }
} 

以下は上記の「InterfaceTest」クラスを実装したクラスその二です。

class InTest2 implements InterfaceTest {
    private String inTest2;
    public InTest2(String str) {
        this.inTest2 = str;
    }
    //抽象メソッド
    public void inTest() {
        System.out.println("InTest2クラスです。");
        System.out.println(inTest2);
    }
} 

そして、以下が上記のクラスたちを呼び出すメインクラスになります。

public class MainTest {
    public static void main(String[] args) {
        InterfaceTest inT[] = new InterfaceTest[2];
        inT[0] = new InTest1("InTest1クラスのインスタンス。");
        inT[1] = new InTest2("InTest2クラスのインスタンス。");

        for (int i = 0; i < inT.length; i++) {
            inT[i].inTest();
        }
    }
}

以下が実行結果です。

InTest1クラスです。
InTest1クラスのインスタンス。
InTest2クラスです。
InTest2クラスのインスタンス。

以上の実行結果をみてわかるように、 それぞれのクラスの抽象メソッド(inTest())が適切に呼ばれているのがわかります。

ポイント

ヒント

抽象クラスとインタフェース

メソッドの定義のみ宣言し、実装を継承したサブクラスに任せるといったことを考えると抽象クラスとインタフェースは似ている役割をはたしていることになります。
 しかし、抽象クラスとインターフェイスには以下のような違いがあげられます。

関連


Copyright © 2003 - 2006 Okapi Project All Rights Reserved.