複数のインタフェースを実装する
出力はどれか。
public class Main {
public static void main(String[] args) {
Duck d = new Duck();
Flyer f = d;
Swimmer s = d;
System.out.println(f.fly() + " " + s.swim());
}
}
interface Flyer {
String fly();
}
interface Swimmer {
String swim();
}
class Duck implements Flyer, Swimmer {
public String fly() { return "fly"; }
public String swim() { return "swim"; }
}
- A
fly swim - B コンパイルエラーになる
- C 実行時に例外が発生する
- D
fly
正解と解説を見る
正解: A
- A: クラスは複数のインタフェースを実装できます。Duck を Flyer 型・Swimmer 型の両方で扱えるので fly swim です。
- B: implements には複数のインタフェースをカンマ区切りで書けます。
- C: 例外になる処理はありません。
- D: s.swim() も呼ばれて連結されるので、swim も出力されます。
ポイント
- クラスは複数のインタフェースを implements できます。インスタンスはどのインタフェースの型の変数にも入れられます。