LoginSignup
7
5

More than 3 years have passed since last update.

javaのinterfaceを自分なりに理解する

Posted at

はじめに

現場でjavaのinterfaceが度々出てくるけど、曖昧の中で作業をしていたので
ここで自分なりに調べてまとめる。

interfaceとは??

言葉の意味をwikipediaで調べると
「ソフトウェア間の通信を行う際の情報の渡し方などを決めたもの。」

javaではクラスの具体的な処理内容は記述せず
定数とメソッドのみを記述したもの。

自分なりに噛み砕くとクラスの仕様を記述したもの。

【使い方1】インターフェイスの作成

書き方は以下の通り

アクセス修飾子 interface インターフェース名{}

【使い方2】インターフェイスの実装クラス

書き方は以下の通り

class クラス名 implements インターフェイス名 {
  処理内容
}

実際に書いてみる

Main.java
//インターフェイス
interface Cat{
    String NAME = "tama";

    void helloName();
}

//インターフェイスの実装クラス
class Sample implements Cat {
    public void helloName() {
        System.out.println("こんにちは、" + NAME);
    }
}

//実行
class Main {
    public static void main(String[] args) {
        Sample a = new Sample();
        a.helloName();
    }
}

実行結果

こんにちは、tama

正常に実行出来ました!
インターフェイスの実装クラスSampleではimplementsでインターフェイスを指定しています。
これによりSampleではインターフェイスクラスCatの定数が使用可能になりました。

また、インターフェイスクラスで定義したメソッドは修飾子を記述せずとも抽象メソッドと判断されます。
なので、インターフェイスの実装クラスではメソッド(今回で言うとhelloNameメソッド)
を必ずオーバーライドしなければいけません。

なぜ便利なのか??

保守性

形式に沿って実装が進められるので開発時間の短縮に繋がる。
形式が決まっているので、クラスごとに似通ったメソッドが乱立するのを防げる。

あと自分が現場で感じたことはシンプルに実装が追いやすい。

実装漏れを防げる

インターフェイスで定義したメソッドは抽象メソッドでオーバーライドが必要。
そのためメソッドの実装漏れを防げる。

多重継承できる

勉強している中でインターフェイスではなく抽象クラスでいいのでは?
と思っていましたがインターフェイスは複数のインターフェイスをimplements
することが可能な点が抽象クラスと異なりました。
クラスごとに同じ記述をしなくて良い。

おわりに

今回はjavaのインターフェイスをまとめてみました。
書き方が分かってもなぜ便利なのか必要なのかが掴めないと中々理解出来ないので
そこを自分なりに落とし込むことが大事だと今更実感しました。

参考資料

この記事は以下の情報を参考にして執筆しました。

7
5
2

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
7
5