インターフェイスの機能の実装

インターフェイスによって提供されるメソッドは、 そのサブクラスの中で内容を実装しなくてはいけません。
以下のようなインターフェイスがあったとしましょう。 このインターフェイスの目的は、クラスに「空を飛ぶ能力」を追加する ものだと考えてください。 インターフェイスには、空を飛ぶための手段を与えるメソッド howToFly() が定義されています。 ただし、このメソッドはまだ実装されてはいません。 つまり、具体的にどうやって空を飛ぶのかは未定です。


public interface Flying {

    /** まだ実装されていない abstractメソッド */

       abstract public void howToFly();
}

このインターフェイスを別の既存のクラス Horse にインプリメントしてみましょう。 馬に空を飛ぶ能力を与えて Pegasus(ペガサス)という新しいクラスを定義します。


public class Pegasus extends Horse implements Flying  {

   /* インターフェイス Flyingの中のメッソドを実装する */

       public void howToFly() {

              System.out.println("I use my wings.");
       }
}

今度はまた別のクラスに Flying をインプリメントします。


public class FlyingElephant extends Elephant implements Flying  {

   /* インターフェイス Flyingの中のメッソドを実装する */

       public void howToFly() {

              System.out.println("I use balloons.");
       }
}

このように、インターフェイスを通じて共通の性質を持つ新しいクラスの グループを作ることができます。