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

时间:2016-02-24 13:51:31

标签: java arrays

我试图返回两个对象区域的总和。以下是该计划的目的:

n = 6
'9' * n
=> '999999'

我一直在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

感谢任何帮助。

3 个答案:

答案 0 :(得分:4)

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

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

数组中每个getArea的具体实现GeometricObject将在运行时解析。

示例

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

答案 1 :(得分:1)

您有GeometricObject[] a所以当您致电a[i].getArea()时,getArea()方法必须在GeometricObject上。它可以是抽象方法,但签名必须在那里。< / p>

答案 2 :(得分:0)

  1. 将GeometricObject从类转换为接口
  2. 将语句public double getArea();添加到GeometricObject接口
  3. 改变Circle&amp;用于实现GeometricObject而不是extend的Rectangle。