014-007-005
instanceof演算子:型チェック
上級
問題説明
instanceof演算子:型チェック
この問題では: Shape・Circle・Rectangleクラスで継承階層を構築し、標準入力から受け取った図形の種類をもとにオブジェクトを生成し、instanceof演算子を使って各オブジェクトの型を判定した結果を標準出力に表示するプログラムを作成します。
学習目標: instanceof演算子を使ってオブジェクトの型を判定する方法を理解する
概要
instanceof演算子は、オブジェクトが特定のクラスまたはインターフェースのインスタンスかどうかを判定します。継承階層での型チェックに使用され、安全なダウンキャストの前提条件として重要です。
仕様
親クラスShapeを作成:
draw()メソッド:"Drawing shape"を出力
子クラスCircleを作成:
子クラスRectangleを作成:
Shapeを継承draw()をオーバーライド:"Drawing rectangle"を出力- 独自メソッド
getDimensions():"Width: 10, Height: 20"を出力
Mainクラスで:
- 標準入力から図形の数nを読み込む
- 続くn行から図形の種類("circle"・"rectangle"・"shape"のいずれか)を読み込む
- 各種類に対応するオブジェクトを生成してShape配列に格納する
- 各要素に対してinstanceofでCircleかどうかチェック
- Circleの場合は"This is a circle"と出力してgetRadius()を呼び出し
- それ以外は"Not a circle"と出力
入力形式
n
type1
type2
...
typeN
- n:図形の数(1以上)
- typei:"circle"・"rectangle"・"shape"のいずれか
出力形式
各図形に対して:
- Circleの場合:"This is a circle" と "Radius: 5" を出力
- それ以外の場合:"Not a circle" を出力
入出力例
入力:
3
circle
rectangle
shape
出力:
This is a circle
Radius: 5
Not a circle
Not a circle
