015-002-009

配列でアップキャストを活用する

中級

問題説明

配列でアップキャストを活用する

この問題では: Shape型の配列にCircleRectangleのインスタンスをアップキャストして格納し、ポリモーフィズムを活用してそれぞれのarea()メソッドをループで呼び出して面積を標準出力に表示するプログラムを作成します。

学習目標: スーパークラス型の配列にサブクラスを格納してループ処理する方法を理解する

概要

StandardInputから円の半径、長方形の幅と高さを読み込み、Shape型の配列にCircleとRectangleを格納し、ループでarea()を呼び出すプログラムを作成してください。

入力形式

<radius>
<width>
<height>
  • 1行目: Circleの半径(double)
  • 2行目: Rectangleの幅(double)
  • 3行目: Rectangleの高さ(double)

仕様

  1. Shape クラスdouble area() メソッドを定義(0.0を返す)
  2. Circle がShapeを継承し、double radiusコンストラクタで受け取り、area()で 3.14 * radius * radius を返す
  3. Rectangle がShapeを継承し、double width, height をコンストラクタで受け取り、area()で width * height を返す
  4. mainでScannerから値を読み込み、Shape配列に Circle(radius) と Rectangle(width, height) を格納
  5. ループで各要素のarea()を呼び、Area: <面積> を出力

出力形式

Area: <circle_area>
Area: <rectangle_area>

入出力例

入力:

5.0
3.0
4.0

出力:

Area: 78.5
Area: 12.0

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

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

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

新規登録