You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java如何向Shape对象数组插入元素并遍历输出形状面积?

Java多态数组遍历实现方案

前置修正

你提供的Rectangle类存在语法错误,getArea方法上的重写注解缺失@符号,需要先修改为:

@Override
public double getArea() {
    return length*width;
}

否则代码编译会失败。

TestArea类完整实现

你需要先给Shape数组的每个位置赋值不同参数的子类实例,再通过增强for循环遍历输出即可,完整代码如下:

public class TestArea {
    public static void main(String[] args){
        double side = 5.0 ;  double length = 10.0;    double width = 12.0;
        int size = 5;
        Shape arrayOfShapes[] = new Shape[size];
        // 给数组5个位置分别赋值不同参数的子类实例
        arrayOfShapes[0] = new Square(side); // 边长5的正方形
        arrayOfShapes[1] = new Rectangle(length, width); // 长10宽12的矩形
        arrayOfShapes[2] = new Square(2.5); // 边长2.5的正方形
        arrayOfShapes[3] = new Rectangle(7, 8); // 长7宽8的矩形
        arrayOfShapes[4] = new Square(9.4); // 边长9.4的正方形

        // 增强for循环遍历输出
        for (Shape shape : arrayOfShapes) {
            System.out.printf("形状名称:%s,对应面积:%.2f %n", shape.getName(), shape.getArea());
        }
    }
}

核心说明

  • 因为Square和Rectangle都继承自Shape抽象类,遵循里氏替换原则,子类实例可以直接存入Shape类型的数组
  • 遍历调用getArea()方法时会自动触发多态调度,执行对应子类的面积计算逻辑,不需要手动判断类型

内容的提问来源于stack exchange,提问作者user14570244

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 22:15:00