Public feed
#923979
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<Shape> shapes = new ArrayList<Shape>(); shapes.add(s1); shapes.add(s2); shapes.add(r1); shapes.add(r2); List<Square> squareShapes = new ArrayList<Square>(); squareShapes.add(s1); squareShapes.add(s2); List<Rectangle> rectangleShapes = new ArrayList<Rectangle>(); 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<? extends Shape> 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; }}