Java 17 Silver ・ 5. 継承とインタフェースの使用
メソッドのオーバーライド の練習問題と解説
Java 17 Silver ラボ の「5. 継承とインタフェースの使用 › メソッドのオーバーライド」の問題 7 問を載せています。問題を開くと、正解と選択肢ごとの解説が読めます。
メソッドのオーバーライド について
サブクラスで親のメソッドを定義し直すオーバーライドの決まりと、実行時にどちらのメソッドが呼ばれるかを扱う分類です。
オーバーライドでは、アクセス修飾子を親より狭くできません (public を protected にするとコンパイルエラー)。戻り値の型は同じか、親の戻り値のサブクラスにできます。@Override を付けると、オーバーライドになっていないときにコンパイルエラーで教えてくれます。
呼ばれるのは変数の型ではなく、実際のオブジェクトのメソッドです。ただし private メソッドはオーバーライドされず、static メソッドは「隠蔽」で、変数の型のメソッドが呼ばれます。親のコンストラクタからオーバーライドされたメソッドを呼ぶと子のメソッドが動き、子のフィールドはまだ初期化前 (0 や null) なのが典型的なひっかけです。
問題 (7 問)
- オーバーライドしたメソッドの呼び出し
- アクセスを狭めるオーバーライド
- 戻り値の型を変えるオーバーライド
- @Override の付いたメソッド
- private メソッドはオーバーライドされない
- 親のコンストラクタからオーバーライドしたメソッドを呼ぶ
- static メソッドは隠蔽
広告