0
1

More than 1 year has passed since last update.

【Java基礎】インターフェース

Posted at

はじめに

最近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で美しいコードが書けるように頑張りましょう!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1