Javaのインターフェースとは?クラスに共通の使い方を決める仕組み

最終更新日

Schoo Java入門 初級【2026年版】第7回 継承とインターフェース

本記事は、Schooの「Java入門 初級【2026年版】」第7回「継承とインターフェース」を学ぶ前後に、Javaのインターフェースの考え方を整理したい方向けのステップアップ学習記事です。

ただし、Schooを受講していない方でも、クラス、メソッド、継承、オーバーライドの基本を学んだあとに読み進められる内容にしています。

Schoo コースページ:Java入門 初級【2026年版】

インターフェースは、クラスに共通の使い方を決める仕組みです。たとえば「このクラスは show() で表示できる」という約束を決めておくと、違うクラスでも同じ呼び方で扱いやすくなります。

インターフェースは共通の使い方を決める仕組み

インターフェースは interface を使って定義します。次の例では、Display インターフェースで show() というメソッドを持つことを決めています。

public interface Display {
    void show();
}

ここでは、show() の中身は書いていません。インターフェースでは「どのようなメソッドを持つか」という使い方の約束を決めています。

図解:インターフェースは共通の呼び方を決める
interface Display
public interface Display {
  void show();
}
show() を持つ、という約束を決めます。
implementsで
実装する
TextDisplay
文字列を表示する show() を作ります。
NumberDisplay
数値を表示する show() を作ります。
インターフェースは、クラスに共通の使い方を決めるための仕組みです。

implementsでインターフェースを実装する

クラスがインターフェースを使うときは implements を書きます。implements Display と書いたクラスは、Display で決めた show() を実装します。

public class TextDisplay implements Display {
    private String text;

    public TextDisplay(String text) {
        this.text = text;
    }

    @Override
    public void show() {
        System.out.println(text);
    }
}

TextDisplayDisplay を実装しているため、show() を持つ必要があります。この例では、文字列を表示する処理を show() に書いています。

public class NumberDisplay implements Display {
    private int number;

    public NumberDisplay(int number) {
        this.number = number;
    }

    @Override
    public void show() {
        System.out.println(number);
    }
}

NumberDisplayDisplay を実装しています。表示する中身は数値ですが、呼び出し方は同じ show() です。

図解:implementsしたクラスは約束したメソッドを作る
TextDisplay
public class TextDisplay
    implements Display {
  @Override
  public void show() {
    System.out.println(text);
  }
}
NumberDisplay
public class NumberDisplay
    implements Display {
  @Override
  public void show() {
    System.out.println(number);
  }
}
中身は違っても、どちらのクラスも Display の約束どおり show() を持っています。
implements は、インターフェースで決めたメソッドをクラスで実装する書き方です。

違うクラスでも同じ呼び方ができる

インターフェースを使うと、違うクラスでも共通の型として扱えます。

Display d1 = new TextDisplay("こんにちは");
Display d2 = new NumberDisplay(100);

d1.show();
d2.show();

d1 の実体は TextDisplay なので、文字列を表示する show() が動きます。d2 の実体は NumberDisplay なので、数値を表示する show() が動きます。

図解:違うクラスでも同じshow()で呼び出せる
呼び出し側
Display d1 = new TextDisplay(“こんにちは”);
Display d2 = new NumberDisplay(100);
d1.show();
d2.show();
d1.show()
TextDisplayshow() が動き、文字列を表示します。
d2.show()
NumberDisplayshow() が動き、数値を表示します。
インターフェース型で扱うと、違うクラスでも共通のメソッド名で呼び出せます。

インターフェースは「中身」ではなく「呼び方」をそろえる

インターフェースを理解するときは、「処理の中身をそろえる」のではなく、「呼び方をそろえる」と考えるとわかりやすくなります。

TextDisplay は文字列を表示し、NumberDisplay は数値を表示します。中身は違いますが、どちらも show() で呼び出せる点が共通しています。

抽象クラスとの違いは何か

抽象クラスも、子クラスに処理を作らせる仕組みとして使えます。ただし、抽象クラスは共通のフィールドや共通処理を持つ親クラスとして使うことが多く、インターフェースは「このメソッドを持つ」という共通の使い方を決めるときに使います。

最初は、抽象クラスは「共通処理を持つ親クラス」、インターフェースは「共通の呼び方を決める約束」と分けて考えると整理しやすくなります。

確認問題

  1. interface Display では、何というメソッドを持つことを決めていますか。
  2. TextDisplay implements Display と書いた場合、TextDisplay は何を実装する必要がありますか。
  3. TextDisplayNumberDisplay は中身が違いますが、どのような呼び方を共通にできますか。

演習後の確認:こちらのページを使って、自分で考えた内容を見直せます。

あわせて読みたい関連記事

まとめ

Javaのインターフェースは、クラスに共通の使い方を決める仕組みです。interface でメソッドの約束を決め、クラス側では implements を使って実装します。違うクラスでも同じインターフェースを実装していれば、共通のメソッド名で呼び出せます。

シェアする