【Java】interface(インターフェース)とは - 使い方など紹介
- 作成日:2022/01/20
初心者向けにインターフェースについて解説します。
インターフェースとは
interface(インターフェース)とは値やメソッドをもったもので、クラスに新たな機能を付加したいときなどに継承して使います。
クラスの継承と似ていますが、インターフェースは具体的な内容を記述できません。 普通のクラスとは以下の点で異なります。
- 変数は定義できず、定数のみ
- 関数は宣言だけ。処理内容は記述できない
通常のクラスはメンバー変数や関数の処理内容まで記述できますが、 インターフェースでは定数や関数の形式だけしか宣言できません。 例を見てみましょう。
//インターフェースの宣言
interface Inter{
int a = 1;
void out();
}
//クラスの宣言
class SampleClass{
int a;
void out(){
System.out.println(a);
};
}
インターフェースで宣言した変数は必ず「public static final」がついているとみなされるので、定数となります。 4行目のように省略してもOKです。
また、5行目のようにインターフェース内での関数宣言は形だけにしておいて、処理まで記載してはいけません。
使い方
宣言したインターフェースはimplementsで継承して使います。
//インターフェースの宣言
interface Inter{
void out();
}
//インターフェースを継承して使う
class SampleClass implements Inter{
public void out(){
System.out.println(a);
};
}
継承したインターフェースで宣言されている関数は必ず処理を記載しなければなりません。 上の例だと、4行目でout関数がインターフェース内で宣言されているので、このインターフェースを継承したら、 out関数の処理内容を記述する必要があります。(8~10行目)
複数のインターフェース
クラスでは複数の継承はできませんが、インターフェースは複数の継承が可能です。
//インターフェースの宣言①
interface Inter1{
void out1();
}
//インターフェースの宣言②
interface Inter2{
void out2();
}
//インターフェースを複数継承して使う
class SampleClass implements Inter1,Inter2{
public void out1(){
System.out.println("Sample1");
};
public void out2(){
System.out.println("Sample2");
};
}
複数のインターフェースを継承する場合は11行目のようにカンマで区切って指定します。
13~17行目のように、継承したインターフェースの関数は全て書かなければいけませんので、忘れないようにしましょう。
型について
インターフェースを実装したクラスは、そのインターフェースの型を使うことができます。 言葉だとわかりにくいですね。例を見ましょう。
//インターフェースの宣言
interface Inter{
void out();
}
//クラスの宣言
class SampleClass implements Inter{
public void out(){
System.out.println("sample");
};
}
public class App {
public static void main(String[] args) {
//クラスの型
SampleClass tmp1 = new SampleClass();
tmp1.out();
//インターフェースの型
Inter tmp2 = new SampleClass();
tmp2.out();
}
}
16行目と20行目に注目してください。どちらもSampleClassのインスタンスを生成しているのですが、代入する型が違います。 16行目はSampleClass型ですが、20行目はInter型に代入しています。
SampleClassはInter型のインターフェースを継承しているので、Inter型にしても使えるのです。
このように、インターフェースを継承したクラスは、継承したインターフェースの型を使うことができるのです。