我试图返回两个对象的面积之和。这是应该执行此操作的程序:
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
方法。
然后,子类(Circle
,Rectangle
等)可以@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
}
}