はじめに
最近Java基礎の研修を受けました。学生時代にJavaを授業で習って基礎は身につけていたのですが、忘れていた内容もあったので備忘録として書き残してみます。
この記事では、Javaの基礎的な内容に関してまとめていきます。
今回はインターフェースです。
インターフェースとは
インターフェースとは、原則として、publicな抽象メソッドだけを宣言できるクラスのようなものです。コンストラクタも宣言することができません。また、インスタンス化できないのも特徴です。
インターフェースの宣言
インターフェースは以下のように宣言します。
修飾子 interface インターフェース名 {
インターフェースのメンバ
}
メソッド
インターフェースには、publicな抽象メソッドが宣言できます。
interface Booking {
public abstract String getTitle();
List<String> getContent(); // public abstractは省略できる
}
フィールド
インターフェースでは、public static final
なフィールド(定数)のみ宣言できます。
interface Booking {
public static final String NAME = "Qiita_Official";
int PRICE = 1000; // public static finalは省略できる
}
インターフェースの実装
インターフェースは単独でインスタンス化できません。インスタンス化には実装クラスが必要です。実装クラスとは、インターフェースの抽象メソッドを全てオーバーライドした具象クラスのことです。
実装クラスを宣言することをインターフェースを実装すると呼びます。
インターフェースは以下のように実装します。
修飾子 class クラス名 implements インターフェース名 {
// 抽象メソッドをオーバーライド
}
class Introduction implements Booking {
// この時点ではコンパイルエラー
}
メソッドのオーバーライド
実装クラスは、インターフェースの抽象メソッドを全てオーバーライドする必要があります。
class Introduction implements Booking {
private String title;
public Introduction(String title) {
this.title = title;
}
@Override
public String getTitle() {
return title;
}
@Override
public List<String> getContent() {
return List.of(
"Qiitaの投稿方法について紹介している本です。",
"簡単な記事を1つ投稿することを目標としています。"
);
}
}
実装クラスも通常のクラスです。フィールドやメソッド、コンストラクタを宣言できます。
インターフェースの複数実装
1つのクラスで複数のインターフェースを実装することができます。
interface Writing {
void write();
}
複数のインターフェースを実装するときは、それぞれのインターフェースが持つ抽象メソッドを全てオーバーライドします。
class Conclusion implements Booking, Writing {
@Override
public String getTitle() {
return "要旨";
}
@Override
public List<String> getContent() {
return List.of(
"Qiitaの投稿方法について紹介している本です。",
"簡単な記事を1つ投稿することを目標としています。"
);
}
@Override
public void write() {
List<String> content = getContent();
for (String line : content) {
System.out.println(line);
}
}
}
まとめ
今回の記事で紹介したインターフェースと、前回紹介した継承を利用することで、簡潔にコードを記述できるようになります。上手に実装していくことで、javaで美しいコードが書けるように頑張りましょう!