现有以下接口的声明:
public interface CalcArea {
double getArea();
}
(1)定义圆类Circle并实现接口CalcArea,圆类的主要成员变量为半径radius,构造方法的参数用于初始化半径。
(2)定义矩形类Rectangle并实现接口CalcArea,矩形类的主要成员变量包括长length和宽width,构造方法的参数用于初始化长和宽。
(3)现有如下类Tester,其功能是求存储在一个数组中的多个图形的面积之和,要求补全其中缺少的代码。
public class Tester {
static CalcArea[] shapes = { new Circle(1.0), new Rectangle(3.0, 4.0), new Circle(8.0) };
public static void main(String[] args) {
System.out.println("total area = " + sumArea(shapes));
}
public static double sumArea( CalcArea[] shapes) {
double sum = 0;
for(CalcArea c:shapes) {
sum=sum+c.getArea();
}
return sum;
}
}
所有类和源代码
public interface CalcArea {
double getArea(); //定义抽象类getArea
}
class Circle implements CalcArea {
double radius;
public Circle(double r) {
radius=r;
}
@Override
public double getArea() {
// TODO Auto-generated method stub
return (3.14159 * radius * radius);
} //通过getArea实现圆的面积计算
}
class Rectangle implements CalcArea {
double width,height;
public Rectangle(double w,double h) {
width=w;
height=h;
}
@Override
public double getArea() {
// TODO Auto-generated method stub
return (width * height);
} //实现长方形面积计算
}
public class Tester {
static CalcArea[] shapes = { new Circle(1.0), new Rectangle(3.0, 4.0), new Circle(8.0) }; //定义数组CalcArea[]
public static void main(String[] args) {
System.out.println("total area = " + sumArea(shapes));
} //主函数中输出所有的面积
public static double sumArea( CalcArea[] shapes) {
double sum = 0;
for(CalcArea c:shapes) {
sum=sum+c.getArea();
}
return sum; //通过循环调用接口并求和
}
}
运行结果