抽象クラスを new する
このコードを実行するとどうなるか。
public class Main {
public static void main(String[] args) {
Shape s = new Shape();
System.out.println(s.area());
}
}
abstract class Shape {
abstract double area();
}
- A
0.0と出力される - B 実行時に例外が発生する
- C コンパイルエラーになる
- D
nullと出力される
正解と解説を見る
正解: C
- A: 抽象クラスは new できないので、実行までたどり着きません。実行まで進まないので、何も出力されません。
- B: コンパイルの時点でエラーになるので、実行時の例外にはなりません。
- C: abstract クラスはインスタンスを作れないので、new Shape() がコンパイルエラーになります。
- D: コンパイルエラーなので実行できません。
ポイント
- 抽象クラスはインスタンスを作れません。サブクラスで抽象メソッドを実装して使います。