Java-インターフェース

インターフェースとは

インタフェースとは、ものごとの境界となる部分のこと及び境界でのプロトコルを指します。
ものごと同士が情報などのやり取りをする際の界面における円滑化の仕組みを意味します。

Javaでは多重継承の概念は取り入れられていません。
それでも複数クラスからの継承を行いたい場合にインターフェース機能を利用します。


インターフェースのメリット

インターフェースのメリットとしては、以下のことが挙げられます。

・クラスの動作をプログラマに明示する。

・分散環境でのオブジェクト利用。


インターフェースの作成

interfaceキーワードを使用して、定数およびメソッドを定義します。


public interface MyInterface1 {
    int temp = 1;
}

extendsによって、既存インターフェースを拡張したインターフェースを定義することもできます。


//インターフェースを拡張したインターフェースを定義する
public interface MyInterface2 extends MyInterface1 {
    String str = "interface";
}

インターフェースの使用

インターフェースを使用するときはimplementsキーワードを使用します。

implementsとは「実装」という意味であり、インターフェースに対応する処理を実装します。


class MyClass implements MyInterface2 {
    public void func1() {
        /* function */
    }
}

実装について

Java言語でのインターフェースとは、メソッドの中身などが存在しないメソッドの宣言文(抽象的なメソッド=Abstract method)とフィールドだけのクラスから構成されます。

インターフェースはclassではなくinterfaceとして宣言され、通常のclassからインプリメントされることにより利用されます。

Javaにおけるインターフェースはクラスではなく、クラスへの要求のセットです。



// 捕食動物を表すインタフェース
public interface Predator {
    // 抽象メソッド
    boolean chasePrey(Prey p); // 餌を追いかける
    void eatPrey(Prey p); // 餌を食べる
}

// Lion implements
public class Lion implements Predator {
    public boolean chasePrey(Prey p) {
        // Lion固有のメソッドの実装
    }

    public void eatPrey (Prey p) {
        // Lion固有のメソッドの実装
    }
}

// Cat implements
public class Cat implements Predator {
    public boolean chasePrey(Prey p) {
        // Cat固有のメソッドの実装
    }

    public void eatPrey (Prey p) {
        // Cat固有のメソッドの実装
    }
}

関連ページ