interface Flyable {
void fly();
}
class Bird implements Flyable {
void fly() { System.out.println("flying"); }
}
public class Main {
public static void main(String[] args) { new Bird().fly(); }
}
選択肢
- あなたの回答
- 正解
正解
B. コンパイルエラーになる
詳細解説
インターフェースのメソッドは暗黙的に public abstract です。Bird の fly() はアクセス修飾子なし(パッケージプライベート)なので、public より狭い権限になりコンパイルエラーになります。
なぜ他の選択肢が違うのか
- アクセス権が弱くなるためコンパイルエラーです。
- コンパイルエラーのため AbstractMethodError は発生しません。
- コンパイル段階でエラーになるため実行されません。
罠ポイント
インターフェースを実装するときは修飾子を省略せず明示的に public を付けましょう。