Java 17 Silver ・ 5. 継承とインタフェースの使用
デフォルト・メソッドとプライベート・メソッドの使用 の練習問題と解説
Java 17 Silver ラボ の「5. 継承とインタフェースの使用 › デフォルト・メソッドとプライベート・メソッドの使用」の問題 8 問を載せています。問題を開くと、正解と選択肢ごとの解説が読めます。
デフォルト・メソッドとプライベート・メソッドの使用 について
Java 8 からインタフェースに本体のある default メソッドを、Java 9 から private メソッドを書けます。その決まりと、名前がぶつかったときにどうなるかを確かめます。
2 つのインタフェースに同じ default メソッドがあり、両方を実装すると、クラスでオーバーライドしない限りコンパイルエラーです。オーバーライドの中で特定の方を呼ぶには A.super.hello() と書きます。親クラスのメソッドとインタフェースの default メソッドがぶつかったときは、クラスのメソッドが優先されます。
private メソッドは default メソッドなどの共通処理をまとめるためのもので、実装したクラスからは呼べません。インタフェースの static メソッドからは static でない private メソッドを呼べないので、static メソッドと共通の処理は private static にします。equals・hashCode・toString を default メソッドとして定義するとコンパイルエラーです。
問題 (8 問)
- default メソッド
- default メソッドの衝突
- default メソッドの衝突を放置する
- クラスのメソッドが優先
- インタフェースの private メソッド
- 実装クラスからインタフェースの private メソッドを呼ぶ
- static な private メソッド
- Object のメソッドを default で定義する
「デフォルト・メソッドとプライベート・メソッドの使用」をこのサイトで解く
広告