import java.util.ArrayList;
import java.util.List;
// 抽象クラス Shape
abstract class Shape {
    // 抽象メソッド calculateArea を宣言
    public abstract double calculateArea();
}
// 具象クラス Circle
class Circle extends Shape {
    private double radius;
    // コンストラクタ
    public Circle(double radius) {
        this.radius = radius;
    }
    // calculateArea メソッドのオーバーライド
    @Override
    public double calculateArea() {
        return Math.PI * radius * radius;
    }
}
// 具象クラス Rectangle
class Rectangle extends Shape {
    private double length;
    private double width;
    // コンストラクタ
    public Rectangle(double length, double width) {
        this.length = length;
        this.width = width;
    }
    // calculateArea メソッドのオーバーライド
    @Override
    public double calculateArea() {
        return length * width;
    }
}
// メインクラス
public class Main {
    public static void main(String[] args) {
        // Shape 型のリストを作成
        List<Shape> shapes = new ArrayList<>();
        // Circle インスタンスをリストに追加
        shapes.add(new Circle(5.0));
        // Rectangle インスタンスをリストに追加
        shapes.add(new Rectangle(4.0, 6.0));
        // ポリモーフィズムを使用して異なる形状の面積を計算して表示
        for (Shape shape : shapes) {
            System.out.println("Area: " + shape.calculateArea());
        }
    }
}このコードでは、抽象クラス Shape を定義し、具象クラス Circle と Rectangle がそれを拡張しています。各具象クラスでは calculateArea メソッドをオーバーライドし、ポリモーフィズムを使用してShape 型のリストに異なる形状のインスタンスを追加しています。そして、リスト内の各形状の面積を計算して表示しています。
実行結果:
Area: 78.53981633974483
Area: 24.0               これは、Shape 型のリストに含まれる各要素(Circle および Rectangle)の calculateArea メソッドが正しく呼び出され、それぞれの面積が計算されて表示されていることを示しています。

 
  
  
  
   
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
      
