導入
クラスの継承(extends)は1つのクラスからしかできませんが、インタフェースは 複数 実装できます。「飛べるし泳げるアヒル」のように、複数の「できること」を1つのクラスに持たせてみましょう。
説明
implements のあとにカンマ区切りで複数のインタフェースを指定します。
public class Main {
public static void main(String[] args) {
Duck d = new Duck();
d.fly();
d.swim();
}
}
interface Flyable {
void fly();
}
interface Swimmable {
void swim();
}
class Duck implements Flyable, Swimmable {
@Override
public void fly() {
System.out.println("飛ぶ");
}
@Override
public void swim() {
System.out.println("泳ぐ");
}
}
Duck は Flyable と Swimmable の 両方 の約束を守り、fly() と swim() の両方を実装しています。クラスの継承は1本道ですが、インタフェースなら「できること」をいくつでも組み合わせられます。
やってみよう
下のエディタで Duck に別のインタフェース(例えば Walkable)を追加で実装してみましょう。
演習
interface Walkable { void walk(); } を追加してください。Duck に Walkable も実装させ、walk() を "歩く" と表示するようにしてください。main で fly()・swim()・walk() の順に呼んでください。
ヒント1を見る
class Duck implements Flyable, Swimmable, Walkable { ... } のようにカンマで並べます。
ヒント2を見る
walk() の実装も他の2つと同じ形で public void walk() { System.out.println("歩く"); } と書きます。