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