Javaのキャストはなんで使う?変数の型と実体の違いから理解する考え方|確認問題の回答例

このページは、Javaのキャストはなんで使う?変数の型と実体の違いから理解する考え方の確認問題を見直すためのページです。先に自分で考えてから、回答例と見比べてください。
第1問:回答例
キャストは、共通の型で持っている変数を、必要なときだけ具体的な型として扱い直したい場面で使います。たとえば Moveable 型で持っている変数の中身が Train で、Train 独自の announce() を呼びたい場合です。
第2問:回答例
m の型が Moveable だからです。中身が Train でも、Moveable 型の変数として見ている間は、基本的に Moveable で扱えるメソッドしか呼べません。
第3問:回答例
実際の中身がキャスト先の型とは限らないからです。Walk が入っている変数を Train としてキャストすると、実行時にエラーになります。instanceof で確認してからキャストすると、その失敗を避けやすくなります。