Java 17 Silver ・ 5. 継承とインタフェースの使用
シール・クラスの作成と使用 の練習問題と解説
Java 17 Silver ラボ の「5. 継承とインタフェースの使用 › シール・クラスの作成と使用」の問題 6 問を載せています。問題を開くと、正解と選択肢ごとの解説が読めます。
シール・クラスの作成と使用 について
Java 17 で正式になった sealed は、継承できるクラスを限定する仕組みです。permits の書き方と、許可されたサブクラスに付ける修飾子を扱います。
sealed class Shape permits Circle, Square と書くと、permits に挙げたクラスしか Shape を継承できません。許可されたサブクラスは final・sealed・non-sealed のどれかを必ず付けます。non-sealed にすると、そこから先は誰でも継承できるようになります。sealed は abstract と組み合わせられ、インタフェースにも使えます。
record は暗黙に final なので、修飾子を付けずに sealed インタフェースを実装できます。permits に無いクラスが継承しようとするとコンパイルエラーです。サブクラスに 3 つの修飾子のどれも付けないとエラーになる点と、record だけは例外である点を合わせて覚えます。
問題 (6 問)
- permits に無いクラスの継承
- 許可されたサブクラスの修飾子
- non-sealed のサブクラス
- record で sealed インタフェースを実装
- sealed のサブクラスをさらに制限
- sealed と abstract の組み合わせ
広告