【Java入門】interface(インタフェース)の使い方総まとめ

こんにちは!エンジニアの中沢です。

Javaには初めに処理内容を具体的に書かず、後からメソッドの実装をして使用するためのinterface(インタフェース)があります。

この記事では、interfaceとは何かやinterfaceの使い方という基本的な内容から、

  • defaultメソッドの使い方
  • インタフェースのstaticメソッドの使い方
  • インタフェースと抽象クラスの違い

などの応用的な使い方に関しても解説していきます。今回はこれらの方法を覚えるために、interfaceのさまざまな使い方をわかりやすく解説します!

interfaceとは

interfaceは初めに処理内容を具体的に書かず、後からメソッドの実装をして使用するために使います。後からメソッドの実装をするため、処理を変えたい場合に有効です。interfaceは次のように記述します。

interface Calc{
    // メソッドの宣言
    void calc();
}

interfaceの具体的な使い方をこれから解説していきます。

interfaceの使い方

インタフェースでは定数とメソッドのみが定義できます。インタフェースのメンバ変数は自動的にpublic static finalが付けられるので定数になります。

インタフェースのメソッドは抽象メソッドと同様に、インタフェースを実装したクラスでメソッドを実装する必要があります。クラスにインタフェースを実装するにはimplementsを使用します。これらのインタフェースの使い方を次のプログラムで確認してみましょう。

// インタフェースの作成
interface Calc {
    int NUM1 = 1;
    int NUM2 = 2;
 
    void calc();
}
 
// インタフェースを実装し、足し算するクラスを作成
class Add implements Calc {
    public void calc() {
        System.out.println(NUM1 + NUM2);
    }
}
 
// インタフェースを実装し、引き算するクラスを作成
class Sub implements Calc {
    public void calc() {
        System.out.println(NUM1 - NUM2);
    }
}
 
// インターフェースを実装したクラスを実行するクラスを作成
public class Main {
    public static void main(String[] args) {
        Add add = new Add();
        add.calc();
 
        Sub sub = new Sub();
        sub.calc();
    }
}
[実行結果]
3
-1

このプログラムではCalcインタフェースのcalcメソッドを、実装先のAddクラスとSubクラスのそれぞれで実装しています。このプログラムの実行結果からAddクラスでは足し算を行い、Subクラスでは引き算を行うというように処理を変更できていることが確認できました!

interfaceの使い方についてはこちらで詳しく解説しているので、ぜひ確認してください!

【Java入門】interfaceとimplementsの使い方を基礎の基礎から解説!
更新日 : 2019年4月16日

defaultメソッドの使い方

interfaceのdefaultメソッドを使うことで、処理内容を実装したメソッドを定義することができます。defaultメソッドの使い方を次のプログラムで確認してみましょう。

// インタフェースの作成
interface Calc {
    int NUM1 = 1;
    int NUM2 = 2;
 
    default public void calc() {
        System.out.println(NUM1 + NUM2);
    }
}
 
// インタフェースを実装し、足し算するクラスを作成
class Add implements Calc {
    // オーバーライドしないので何も記述しない
}
 
// インタフェースを実装し、引き算するクラスを作成
class Sub implements Calc {
    public void calc() {
        System.out.println(NUM1 - NUM2);
    }
}
 
// インターフェースを実装したクラスを実行するクラスを作成
public class Main {
    public static void main(String[] args) {
        Add add = new Add();
        add.calc();
 
        Sub sub = new Sub();
        sub.calc();
    }
}
[実行結果]
3
-1

このプログラムではCalcインタフェースのcalcメソッドを、実装先のAddクラスでオーバーライドせずにそのまま使用しています。Subクラスではcalcメソッドをオーバーライドして引き算の処理に変えています。

このプログラムの実行結果からAddクラスではdefaultメソッドを使って足し算を行い、Subクラスではオーバーライドして引き算を行うという処理ができていることが確認できました!

interfaceのdefaultメソッドの使い方についてはこちらで詳しく解説しているので、ぜひ確認してください!

【Java入門】interfaceとdefaultの使い方
更新日 : 2018年10月26日

インタフェースのstaticメソッドの使い方

インタフェースのstaticメソッドを使うことで、インスタンスを生成せずに直接メソッドを呼び出すことができます。インタフェースのstaticメソッドの使い方を次のプログラムで確認してみましょう。

// インタフェースの作成
interface Calc {
    int NUM1 = 1;
    int NUM2 = 2;
 
    public static void calc() {
        System.out.println(NUM1 + NUM2);
    }
}
 
public class Main {
    public static void main(String[] args) {
        Calc.calc();
    }
}
[実行結果]
3

このプログラムではインタフェースのstaticメソッドを、Mainクラスから直接呼び出して使用しています。このプログラムの実行結果から、インタフェースでstaticメソッドが使用できることが確認できました。

インタフェースと抽象クラスの違い

最後にインタフェースと抽象クラスの違いについて解説します。抽象クラスでは複数のクラスを継承する多重継承はできませんが、インタフェースは多重継承のように複数のインタフェースを実装をすることができます。

複数のインタフェースを実装する方法を、次のプログラムで確認してみましょう。

//インタフェースの作成
interface Add {
    int NUM1 = 1;
 
    void add();
}
 
// インタフェースの作成
interface Sub {
    int NUM2 = 2;
 
    void sub();
}
 
// 2つのインタフェースを実装するクラスの作成
class Calc implements Add, Sub {
    public void add() {
        System.out.println(NUM1 + NUM2);
    }
 
    public void sub() {
        System.out.println(NUM1 - NUM2);
    }
}
 
// インターフェースを実装したクラスを実行するクラスを作成
public class Main {
    public static void main(String[] args) {
        Calc calc = new Calc();
        calc.add();
        calc.sub();
    }
}
[実行結果]
3
-1

このプログラムではCalcクラスで、AddとSubの2つのインタフェースを実装しています。Calcクラスでは、実装した2つのインタフェースの変数NUM1、NUM2の両方を使用することができています。

このプログラムの実行結果から複数のインタフェースの実装ができることが確認できました!抽象クラスの使い方についてはこちらで詳しく解説しているので、ぜひ確認してください!

【納得Java】抽象クラス(abstract)を使うメリット
更新日 : 2019年4月8日

まとめ

いかがでしたか?今回はinterfaceの使い方について解説しました。インタフェースは後からメソッドの実装をするため、処理を変えたい場合に有効なのでぜひ覚えてくださいね。

もし、interfaceを使う方法を忘れてしまったらこの記事を確認してください!

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

中沢 丈

フリーランスエンジニア。
システム開発からコンテンツ作成まで幅広く対応します。

連絡先はこちらです。
[email protected]

おすすめコンテンツ

まずはここから!初心者でも1から学べるプログラミング入門カリキュラム

転職成功で受講料0円!あなたもプログラミングを学んでエンジニアデビュー