インタフェースは抽象クラスと同じく抽象メソッドを扱いますが、この2つは何が違うのか、覚えるための自分用メモです。
インタフェースとは?
インタフェースは、抽象クラスと違って継承のためのフィールド変数(定数は可)やコンストラクタ、具象メソッド(Java8からdefault
メソッドは可)は記述せず、抽象メソッドのみを記述します。
(メソッドに自動でpublic abstract
が付きます。)
サンプルプログラム
例えば、以下のインタフェースをTest1
クラスに実装するとします。
Test.java
public interface Test {
void methodA();
void methodB();
void methodC();
}
インタフェースは、以下のような記述で実装できます。
Test1.java
public class Test1 implements Test {
// フィールド
public void methodA() {
// 処理内容
}
public void methodB() {
// 処理内容
}
public void methodC() {
// 処理内容
}
}
実装したクラスをインスタンス化する
インタフェースを実装したクラスをインスタンス化する記述は、通常のインスタンス化と変わりません。
Main.java
public class Main {
public static void main(String[] args) {
Test1 t1 = new Test1();
}
}
オーバーライドしたメソッドを呼び出す
オーバーライドした抽象メソッドは、通常のメソッドと同様に呼び出すことができます。
Main.java
public class Main {
public static void main(String[] args) {
Test1 t1 = new Test1();
logic(t1);
}
static void logic(Test t) {
t.methodA();
t.methodB();
t.methodC();
}
}