015-002-010
アップキャストとダウンキャスト
上級
問題説明
アップキャストとダウンキャスト
この問題では: Scannerで読み込んだ動物の種類に基づいてAnimal/Dog/Catクラスのオブジェクトを生成し、アップキャスト後のメソッド呼び出しとinstanceofを使った安全なダウンキャストを行い、結果を標準出力に表示するプログラムを作成します。
学習目標: 参照型のアップキャストとダウンキャストの動作と安全な使い方を理解する
概要
アップキャストは子→親型への変換(暗黙的)、ダウンキャストは親→子型への変換(明示的)です。instanceofで型を確認してからダウンキャストするのが安全です。
仕様
- Scannerで動物の種類("Dog"、"Cat"、"Animal"のいずれか)を1行読み込む
- AnimalクラスにgetType()メソッドを定義する
- DogクラスにgetType()とfetch()メソッドを定義する
- CatクラスにgetType()とmeow()メソッドを定義する
- 入力に応じたオブジェクトをAnimal型の変数にアップキャストして代入する
- アップキャスト後のgetType()呼び出しと、instanceofでのダウンキャストを行う
入力形式
動物の種類("Dog"、"Cat"、"Animal"のいずれか)
出力形式
Type: [getType()の戻り値]を出力- Dogの場合:
Fetching!を出力 - Catの場合:
Meowing!を出力 - どちらでもない場合:
Unknown typeを出力
入出力例
入力:
Dog
出力:
Type: Dog
Fetching!
