015-002-009
配列でアップキャストを活用する
中級
問題説明
配列でアップキャストを活用する
この問題では: Shape型の配列にCircleとRectangleのインスタンスをアップキャストして格納し、ポリモーフィズムを活用してそれぞれのarea()メソッドをループで呼び出して面積を標準出力に表示するプログラムを作成します。
学習目標: スーパークラス型の配列にサブクラスを格納してループ処理する方法を理解する
概要
StandardInputから円の半径、長方形の幅と高さを読み込み、Shape型の配列にCircleとRectangleを格納し、ループでarea()を呼び出すプログラムを作成してください。
入力形式
<radius>
<width>
<height>
- 1行目: Circleの半径(double)
- 2行目: Rectangleの幅(double)
- 3行目: Rectangleの高さ(double)
仕様
Shapeクラスにdouble area()メソッドを定義(0.0を返す)CircleがShapeを継承し、double radiusをコンストラクタで受け取り、area()で3.14 * radius * radiusを返すRectangleがShapeを継承し、double width, heightをコンストラクタで受け取り、area()でwidth * heightを返す- mainでScannerから値を読み込み、Shape配列に Circle(radius) と Rectangle(width, height) を格納
- ループで各要素のarea()を呼び、
Area: <面積>を出力
出力形式
Area: <circle_area>
Area: <rectangle_area>
入出力例
入力:
5.0
3.0
4.0
出力:
Area: 78.5
Area: 12.0
