Java 17 Silver ・ 5. 継承とインタフェースの使用
参照型のキャストとポリモーフィックなメソッド呼び出し の練習問題と解説
Java 17 Silver ラボ の「5. 継承とインタフェースの使用 › 参照型のキャストとポリモーフィックなメソッド呼び出し」の問題 6 問を載せています。問題を開くと、正解と選択肢ごとの解説が読めます。
参照型のキャストとポリモーフィックなメソッド呼び出し について
親の型の変数に子のオブジェクトを入れたとき、何が呼べて何が動くかの分類です。キャストが失敗したとき、コンパイル時と実行時のどちらで止まるかも確かめます。
呼べるメソッドはコンパイル時に変数の型で決まり、どの実装が動くかは実行時のオブジェクトで決まります。親の型の変数で子にしかないメソッドを呼ぶとコンパイルエラーなので、((Dog) a).bark() のようにキャストしてから呼びます。
ダウンキャストはコンパイルが通っても、実際のオブジェクトがその型でなければ実行時に ClassCastException です。継承関係の無いクラスどうしのキャストはコンパイルエラーになります。フィールドはオーバーライドされないので、親と子に同じ名前のフィールドがあると、変数の型のフィールドが使われます。メソッドとフィールドで決まり方が違う点を分けて覚えます。
問題 (6 問)
「参照型のキャストとポリモーフィックなメソッド呼び出し」をこのサイトで解く
広告