015-003-007

ダウンキャスト: instanceof検査

中級

問題説明

ダウンキャスト: instanceof検査

この問題では: 標準入力から乗り物の種類と名前を読み取り、Vehicle型の配列に格納されたCarBicycleオブジェクトをinstanceofで型チェックし、安全にダウンキャストしてサブクラス固有のメソッドを呼び出すプログラムを作成します。

学習目標: instanceofによる型チェックの後に安全なダウンキャストを行う方法を理解する

概要

スーパークラスVehicleとサブクラスCarBicycleを作成し、スーパークラス型の配列に格納された要素をinstanceofで型チェックした上でダウンキャストし、サブクラス固有のメソッドを呼び出すプログラムを作成してください。

入力形式

N
種類1 名前1
種類2 名前2
...
  • 1行目: 乗り物の数 N
  • 続くN行: 半角スペース区切りで 種類Car または Bicycle)と 名前

仕様

Vehicleクラス

  • String name フィールドを持つ
  • コンストラクタnameを初期化する
  • describe() メソッドで "Vehicle: " + name を返す

Carクラス(Vehicleを継承

  • コンストラクタでnamesuperに渡す
  • honk() メソッドで name + " honks!" を返す

Bicycleクラス(Vehicleを継承)

  • コンストラクタでnamesuperに渡す
  • 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!

コードを実行してみませんか?

この問題のコードエディタと実行機能を使用するには、ログインしてください。

アカウントをお持ちでない方

新規登録