我试图返回两个对象的面积之和。这是应该执行此操作的程序:

public class TestSumArea
{

    public static void main(String [] args)
    {
         GeometricObject[] a = {
                 new Circle (2.4),
                 new Rectangle (3, 5)};
    }


    public static double sumArea(GeometricObject[] a)
    {
        double sum = 0;

        for (int i = 0; i < a.length; i++)
        {
            sum += a[i].getArea();
        }

        return sum;
    }
}


我一直得到cannot find symbol - method getArea(),但我不知道为什么。

这是Circle程序(Rectangle基本上与高度和宽度相同)。

public class Circle extends GeometricObject
{

    public double radius;

    public Circle (double radius)
    {
        this.radius = radius;
    }

    public double getRadius()
    {
        return radius;
    }

    public double getArea()
    {
        return radius * Math.PI;
    }
}


任何帮助表示赞赏。

最佳答案

由于数组的类型为GeometricObject,因此您需要getArea类或接口来实现或声明GeometricObject方法。

然后,子类(CircleRectangle等)可以@Override该方法。

数组中每个getAreaGeometricObject的具体实现将在运行时解决。



abstract class GeometricObject {
    /* You can actually draft a default implementation
       here if you're using an abstract class.
       Otherwise you may want to opt for an interface.
    */
    abstract double getArea();
}
class Rectangle extends GeometricObject {
    @Override
    public double getArea() {
        // TODO calculations
        return 0; //draft
    }
}

07-26 00:52