015-003-010
安全なダウンキャストとinstanceof
上級
問題説明
安全なダウンキャストとinstanceof
この問題では: Animalクラスの階層構造(DogとCat)を作成し、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クラス
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!
