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
相关产品推荐
相关产品推荐

