【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を使う方法を忘れてしまったらこの記事を確認してください!

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

中沢 丈

中沢 丈

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

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

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説