プログラミング言語

【Java入門⑪】インタフェース ~初心者でも安心!基礎から学べるプログラミング講座~

プログラミング言語

※前回の講座がまだの人はこちらから
【Java入門⑩】継承 ~初心者でも安心!基礎から学べるプログラミング講座~

インタフェースとは

設計書を書く時、いきなり内容を書くのではなく、目次の様に書く内容をざっくり決めることから始めると思います。
クラス作成の際でも同じ様なことが言え、インタフェースというものを使います。

インタフェースは、ざっくりとした枠組みや機能定義をすることができます。
クラスを設計図とすれば、インタフェースは設計図の目次の様な物になります。

インタフェース作成のメリット

複数人でシステムの開発を行う際、それぞれ自由にクラスを作成すると、想定通りのクラスが作成できなかったりします。
しかし、インタフェースを作っておけば、他の人がそれを元にクラスを作成することができるので、想定通りのクラスを作成しやすくなります。

インタフェース内には、クラス内で実装して欲しいメソッドを定義することができます。
インタフェース内で定義されたメソッドは、クラス内で必ず実装しなければなりません。
実装しなければ、コンパイルエラーになります。この機能のおかげで、クラス作成時の実装漏れやスペルミスをなくすことができます。

インタフェース

インタフェースの作成

インタフェースを作成してみます。
基本的にクラス作成と変わらないです。
アクセス修飾子インタフェース名を指定し、インタフェース内にクラスで作成して欲しいメソッド名を定義します。

アクセス修飾子 interface インタフェース名 {
アクセス修飾子 型 メソッド名(引数);
}

<使用例>

public interface CarService {
  //戻り値void型、引数なしのshowメソッドを定義
  public void show();
}

これで、CarServiceインタフェースを使うクラス内では、show()メソッドを必ず定義しなければいけなくなりました。

インタフェースの使用

インタフェースは継承と似た形で書けば使うことができます。
使用したいクラス名の後ろにimplementsインタフェース名を指定します。

public class クラス名 implements インタフェース名 {
アクセス修飾子 メソッド名(引数) {
処理;
}
}

CarServiceインタフェースを使う、Carクラスを作成してみます。
※Carクラスに関しては、メソッドの講座で解説しています。
【Java入門⑨】メソッド ~初心者でも安心!基礎から学べるプログラミング講座~

<使用例>

public class Car implements CarService {
  private String model;
  private int height;
  private int width;
  private int fuel;

  //モデルを出力する
  public String getModel() {
    return model;
  }

  //モデルを入力する
  public void setModel(String model) {
    this.model = model;
  }

  //車高を出力する
  public int getHeight() {
    return height;
  }

  //車高を入力する
  public void setHeight(int height) {
    this.height = height;
  }

  //車幅を出力する
  public int getWidth() {
    return width;
  }

  //車幅を入力する
  public void setWidth(int width) {
    this.width = width;
  }

  //燃料を出力する
  public int getFuel() {
    return fuel;
  }

  //燃料を入力する
  public void setFuel(int fuel) {
    this.fuel = fuel;
  }

  //各出力メソッドを使い、詳細を表示
  public void show() {
    System.out.println("*" + getModel() + "の詳細*");
    System.out.println("モデル名:" + getModel());
    System.out.println("車高  :" + getHeight());
    System.out.println("車幅  :" + getWidth());
    System.out.println("燃料容量:" + getFuel());
  }
}

本当にインタフェースが使えているか確認したい場合は、Carクラス内のshow()メソッドをコメントアウトして、コンパイルしてみてください。
以下のコンパイルエラーが出るはずです。

<実行結果>

継承とインタフェース

extendsの後にimplementsを指定することで、継承とインタフェースは同時に使うことができます。

public class クラス名 extends クラス名 implements インタフェース名 {
・・・
}

また、カンマ区切りでインタフェースを複数使うこともできます。

public class クラス名 implements インタフェース名, インタフェース名 {
・・・
}

状況に応じて、継承と同時に使ったり、複数使ったりしてみてください。

まとめ

インタフェースを使うことで、他人へクラス作成の依頼が容易になります。
さらに、チームで開発を行う際に非常に重宝され、細かなミスの対策にもなります。
今後クラスを作成する際に、インタフェースから作成してみてはいかがでしょうか。

次回講座:例外処理
coming soon…

タイトルとURLをコピーしました