有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

数组试图返回Java中两个对象的面积之和

我试图返回两个物体的面积之和。下面是一个可以实现这一点的程序:

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;
    }
}

感谢您的帮助


共 (3) 个答案

  1. # 1 楼答案

    1. 将GeometricObject从类转换为接口
    2. {cdject}添加到接口语句
    3. 换圈&;用于实现GeometricObject而不是extend的矩形
  2. # 2 楼答案

    您有GeometricObject[] a,因此当您调用a[i].getArea()getArea()方法必须在GeometricObject上,它可以是一个抽象方法,但签名必须在那里

  3. # 3 楼答案

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

    子类(CircleRectangle,等等)可以@Override使用该方法

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

    示例

    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
        }
    }