オブジェクト指向の基礎応用問題

次のコードをコンパイル・実行したとき、どうなりますか? interface Flyable { void fly(); } interface Swimmable { void swim(); } class Duck implements Flyable, Swimmable { public void fly() { System.out.println("Flying"); } public void swim() { System.out.println("Swimming"); } } public class Main { public static void main(String[] args) { Flyable f = new Duck(); f.fly(); f.swim(); } }

A.Flying Swimming が出力される
✗ 参照型がFlyableのため、swim()はコンパイル時に呼び出せず、コンパイルエラーとなります。
B.Flying のみ出力される
✗ f.swim()の呼び出しがコンパイルエラーとなるため、fly()も実行されません。
C.コンパイルエラーが発生する← 正解
✓ 正解です。参照型Flyableにはswim()メソッドが定義されていないため、f.swim()はコンパイルエラーになります。
D.実行時エラーが発生する
✗ このケースでは実行時ではなくコンパイル時にエラーが検出されます。

Oracle Certified Java Programmer, Bronze SE の問題一覧