Java interface について

Java の interface についてご紹介します。interface は継承関係のないクラスに、機能を提供する仕組みです。

interface は abstract  と比較されがちです。abstract についての詳細は次の記事にあります。

Java abstract について
Java の abstract についてご紹介します。Java の interface と比較されがちな2つです。interface の詳細...

interface

サンプルとなるコードを見ながらだと理解が早いと思いますので、サンプルとなるコードと合わせて説明していきます。

InterfaceTest.java
interface InterfaceTest{
  // 定数、定義のみ
  int a = 1;
  void test();
}

これがインターフェースです。インターフェースは定数と定義だけで実装がありません。実装が無いのでインスタンス化することも出来ません。

InterfaceTestImplement.java
class InterfaceTestImplement implements InterfaceTest {

  // 必ず実装が必要
  public void test(){
    System.out.println("test");
  };

  //実装しなくてもしても良い
  public void test2(){
    System.out.println("test2");
  };
}

インターフェースの実装です。インターフェースはカンマで繋いでいくつでも実装できます。implementsを使用してインターフェースを指定します。インターフェースで定義したメソッドを必ず実装しなくてはなりません。実装しないとエラーになります。

最低限インターフェースに定義されたメソッドを実装すればよく、インターフェースに定義されていないメソッドも実装することが出来ます。

Main.java
import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        InterfaceTestImplement interfaceTestImplement = new InterfaceTestImplement();
        interfaceTestImplement.test();
        interfaceTestImplement.test2();
    }
}

インターフェースの実装をインスタンス化して使用します。インターフェース自体はインスタンス化することは出来ません。

interfaceの継承

interfaceは継承させることができます。

interface A{
  int a;
  void test1();
}

interface B extends A{
  int b;
  void test2();
}

カンマで繋いで何個でもインターフェースを継承させることが出来ます。

以上、Java interface についてでした。