015-003-010

安全なダウンキャストとinstanceof

上級

問題説明

安全なダウンキャストとinstanceof

この問題では: Animalクラスの階層構造(DogCat)を作成し、Animal[]配列にアップキャストした要素をinstanceofで安全にダウンキャストして、各サブクラス固有のメソッドを呼び出すプログラムを作成します。

学習目標: instanceofによる型チェックを使った安全なダウンキャストを理解し、ClassCastExceptionのリスクを認識する

概要

Animalクラスを基底クラスとし、Dog(bark()メソッド)とCat(purr()メソッド)の2つのサブクラスを作成します。Animal[]配列にアップキャストして格納した後、ループで各要素をinstanceofを使って型を判定し、安全にダウンキャストしてサブクラス固有のメソッドを呼び出します。

仕様

Animalクラス

  • protected String name フィールドを持つ
  • コンストラクタ Animal(String name) で初期化
  • speak()メソッド: "[name] makes a sound"と出力

Dogクラス

  • Animal継承する
  • speak()オーバーライド: "[name] says: Woof!"と出力
  • bark()メソッド: "[name] barks loudly!"と出力

Catクラス

  • Animalを継承する
  • speak()をオーバーライド: "[name] says: Meow!"と出力
  • purr()メソッド: "[name] purrs softly."と出力

Mainクラス

  • Animal[]配列にDog("Rex")、Cat("Whiskers")、Dog("Buddy")を格納
  • ループで全要素のspeak()を呼び出す
  • 次にループでinstanceofを使い、Dogならbark()、Catならpurr()を呼び出す

出力形式

--- Polymorphic speak() ---
Rex says: Woof!
Whiskers says: Meow!
Buddy says: Woof!
--- Safe Downcasting ---
Rex barks loudly!
Whiskers purrs softly.
Buddy barks loudly!

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

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

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

新規登録