record は継承できない
このコードを実行するとどうなるか。
public class Main {
public static void main(String[] args) {
System.out.println(new Point3(1, 2, 3));
}
}
record Point(int x, int y) {
}
record Point3(int x, int y, int z) extends Point {
}
- A
Point3[x=1, y=2, z=3]と出力される - B 実行時に例外が発生する
- C コンパイルエラーになる
- D 何も出力されない
正解と解説を見る
正解: C
- A: 実行まで進まないので、何も出力されません。
- B: record の書き方の誤りはコンパイル時に見つかります。
- C: record は extends できない (暗黙的に final で、ほかのクラスも継承できない) ので、コンパイルエラーです。
- D: 実行まで進まないので、何も出力されません。
ポイント
- record は暗黙的に final で、ほかのクラスを extends することも、record を継承することもできません。
- インタフェースを implements することはできます。