※前回の講座がまだの人はこちらから
【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…