import java.util.ArrayList; import java.util.List; public class Main2 { public static void main(String[] args) { Square s1 = new Square(4); Square s2 = new Square(9); Rectangle r1 = new Rectangle(3, 4); Rectangle r2 = new Rectangle(5, 6); List shapes = new ArrayList(); shapes.add(s1); shapes.add(s2); shapes.add(r1); shapes.add(r2); List squareShapes = new ArrayList(); squareShapes.add(s1); squareShapes.add(s2); List rectangleShapes = new ArrayList(); rectangleShapes.add(r1); rectangleShapes.add(r2); Main2 m = new Main2(); double avgArea = m.averageArea(shapes); System.out.println(avgArea); double avgSquareArea = m.averageArea(squareShapes); System.out.println(avgSquareArea); double avgRectangleArea = m.averageArea(rectangleShapes); System.out.println(avgRectangleArea); } private double averageArea(List shapes) { double sum = 0; for (Shape s : shapes) { sum += s.area(); } return sum / shapes.size(); } } abstract class Shape { public abstract double area(); } class Square extends Shape { public double sideLength; public Square(double sideLength) { this.sideLength = sideLength; } public double area() { return sideLength * sideLength; } } class Rectangle extends Shape { public double xLength, yLength; public Rectangle(double xLength, double yLength) { this.xLength = xLength; this.yLength = yLength; } public double area() { return xLength * yLength; } }