インタフェースとは定数を指定したメンバ変数と抽象メソッドのみで構成されるもので、クラスに実装して使用します。
またクラスを継承したときと同様、インタフェースを実装したクラスはそのインタフェースを参照型として使用することができます。
インタフェースは抽象メソッドを定義している事から一見抽象クラスに似ていますが、クラスとは次の点が異なります。
インタフェースの書式は次のようになります。
[public] interface インタフェース名 {
}
インタフェースを実装するには「implements」を使用します。
class クラス名 implements インタフェースリスト {
インタフェースで定義されている抽象メソッドの実装;
}
クラスと違ってインタフェース同士のとき「多重継承」することが出来ます。
[public] interface インタフェース名 extends 親インタフェースリスト { }
動作確認としてサンプルを挙げておきます。
・サンプルソース(Sample1001.java)
interface If1 { String s1 = "If1"; // 修飾子を省略していますが「final public static」となります。 void m1(); // 修飾子を省略していますが「abstract public」となります。 } interface If2 { String s2 = "If2"; void m2(); } interface If3 extends If1, If2 { // 多重継承できます。 String s3 = "If3"; void m3(); } interface If4 { String s4 = "If4"; void m4(); } class IfSample implements If3, If4 { // 複数のインタフェースを実装できます。 public void m1() { System.out.println("Interface "+ s1 +" の実装"); } public void m2() { System.out.println("Interface "+ s2 +" の実装"); } public void m3() { System.out.println("Interface "+ s3 +" の実装"); } public void m4() { System.out.println("Interface "+ s4 +" の実装"); } } public class Sample1001 { public static void main(String[] args) { IfSample ifsample = new IfSample(); ifsample.m1(); ifsample.m2(); ifsample.m3(); If4 ifsample4 = new IfSample(); // インタフェースを参照型として使用できます。 ifsample4.m4(); } }
・実行結果
C:\dev\java>javac Sample1001.java [Enter] C:\dev\java>java Sample1001 [Enter] Interface If1 の実装 Interface If2 の実装 Interface If3 の実装 Interface If4 の実装