015-003-007
ダウンキャスト: instanceof検査
中級
問題説明
ダウンキャスト: instanceof検査
この問題では: 標準入力から乗り物の種類と名前を読み取り、Vehicle型の配列に格納されたCar・Bicycleオブジェクトをinstanceofで型チェックし、安全にダウンキャストしてサブクラス固有のメソッドを呼び出すプログラムを作成します。
学習目標: instanceofによる型チェックの後に安全なダウンキャストを行う方法を理解する
概要
スーパークラスVehicleとサブクラスCar、Bicycleを作成し、スーパークラス型の配列に格納された要素をinstanceofで型チェックした上でダウンキャストし、サブクラス固有のメソッドを呼び出すプログラムを作成してください。
入力形式
N
種類1 名前1
種類2 名前2
...
- 1行目: 乗り物の数 N
- 続くN行: 半角スペース区切りで
種類(CarまたはBicycle)と名前
仕様
Vehicleクラス
String nameフィールドを持つ- コンストラクタで
nameを初期化する describe()メソッドで"Vehicle: " + nameを返す
Carクラス(Vehicleを継承)
- コンストラクタで
nameをsuperに渡す honk()メソッドでname + " honks!"を返す
Bicycleクラス(Vehicleを継承)
- コンストラクタで
nameをsuperに渡す ringBell()メソッドでname + " rings bell!"を返す
Mainクラス
- Scannerで入力を読み取り、
Vehicle型の配列を作成する - 種類が
CarならCarインスタンスを、BicycleならBicycleインスタンスを生成して配列に格納する - 配列をループし、各要素に対して:
- まず
describe()の結果を出力する Carのインスタンスならhonk()の結果を出力するBicycleのインスタンスならringBell()の結果を出力する
- まず
入出力例
入力
2
Car Sedan
Bicycle Mountain
出力
Vehicle: Sedan
Sedan honks!
Vehicle: Mountain
Mountain rings bell!
