インターフェイス

 ポリモーフィズムを実現させるにはいくつかの方法があります。ここでは、インターフェイスについてみてみましょう。インターフェイスは、抽象メソッドや抽象プロパティなどで構成されます。インターフェイスは「interface」キーワードを使って定義します。

インターフェイス定義の書式
interface クラス名{
 抽象メソッド定義…
}

 インターフェイスはインスタンスを生成できません。別のクラスで実装し、抽象メソッド等をオーバーライドして利用することができるようになります。 実装はクラスの継承と違い、カンマ区切りで複数指定することができます。

インターフェイス実装の書式1
class クラス名 implements インターフェイス名, インターフェイス名…{
 各種定義…
 抽象メソッドのオーバーライド
}

インターフェイス実装の書式2
class サブクラス名 extends スーパークラス名 emplements インターフェイス名…{
 各種定義…
 抽象メソッドのオーバーライド
}

○ ファイル

 次のようにファイルを作成してください。

ファイル名 IDrip.java

サンプルダウンロード

○ プログラム

 インターフェイスを作成しましょう。今回はドリップを表すインターフェイスを作成します。このインターフェイスは、主に飲み物に実装させる予定です。実装したクラスでは飲み物の注ぎ方を定義させます。

  1. interface IDrip{
  2.  String drip();
  3.  String dripWithMilk();
  4. }

○ クラス図

○ 解説

 2、3行目で、抽象メソッドを宣言しています。メソッドの仕様は決まっているので、このメソッドを使用するにはオーバーライドして処理を実装する必要があります。

○ ファイル

 次のようにファイルを作成してください。

ファイル名 Coffee.java

○ プログラム

 次に、ドリップインターフェイスを実装したコーヒークラスを作成しましょう。

  1. public class Coffee implements IDrip{
  2.  //フィールド
  3.  private String name = "コーヒー";
  4.  //注ぐメソッドをオーバーライド
  5.  public String drip(){
  6.   return this.name;
  7.  }
  8.  //ミルクと一緒にそそぐメソッドをオーバーライド
  9.  public String dripWithMilk(){
  10.   return "ミルク" + this.name + "(微糖)";
  11.  }
  12. }

○ クラス図

○ 解説

 6~8行目では、IDripインターフェイスのdripメソッドをオーバーライドしています。このメソッドはフィールドに設定されている飲み物を返します。今回はコーヒーが注がれるイメージとして文字列を返しています。

 11~13行目では、IDripインターフェイスのdripWithMilkメソッドをオーバーライドしています。このメソッドはミルクとコーヒーを返すことでミルクコーヒーを注ぎます。

○ ファイル

 次のようにファイルを作成してください。

ファイル名 Run5.java

○ プログラム

 では次にCoffeeクラスを利用するプログラムを作成しましょう。次のように記述してください。

  1. public class Run5{
  2.  public static void main(String[] args){
  3.   //コーヒーオブジェクトを生成
  4.   Coffee coffee = new Coffee();
  5.   //コーヒーを注いでみる
  6.   System.out.println("drip:" + coffee.drip());
  7.   //ミルクも一緒に注いでみる
  8.   System.out.println("dripWithMilk:" + coffee.dripWithMilk());
  9.  }
  10. }

○ 解説

 4行目では、コーヒーオブジェクトを生成しています。そして、7行目と10行目でオーバーライドしたメソッドを呼び出しています。

○ 実行結果

Drip:コーヒー
DripWithMilk:ミルクコーヒー(微糖)

 今回のようにインターフェイスを実装したオブジェクトは1つだけ利用してもあまり意味がありません。複数のオブジェクトで実装させることで効果が出てきます。次の節でその効果を確認してみましょう。

前へ   次へ