java作业啊(抽象类和接口)!!!
作者:管理员 来源:新浪爱问 日期:2008-04-21
编写一个方法,求数组中所有的几何对象的面积之和。方法头如下:
public static double sumArea(GeometricObject[] a)
编写测试程序,创建三个对象(一个圆、一个圆柱体和一个矩形)的数组,并使用sumArea方法求它们的总面积。
谢谢了!!!
电脑问题网给出的最佳答案
GeometricObject.java
--------------------
public abstract class GeometricObject {
abstract double getArea();
}
--------------------
Circle.java
public class Circle extends GeometricObject {
private double r;
public void setR(double r) {
this.r = r;
}
public double getR() {
return r;
}
public double getArea() {
//System.out.println("圆形");
return Math.PI * Math.sqrt(r);
}
}
-----------------------------
Cylinder.java
public class Cylinder extends GeometricObject {
private double h;// 高
private double r;// 底面半径
public double getH() {
return h;
}
public void setH(double h) {
this.h = h;
}
public double getR() {
return r;
}
public void setR(double r) {
this.r = r;
}
public double getArea() {
//System.out.println("圆柱体");
return Math.PI * Math.sqrt(r) * 2 2 * Math.PI * r * h;
}
}
----------------------------
Rectangle.java
---------------------------
public class Rectangle extends GeometricObject {
private double h;// 宽
private double w;// 长
public double getArea() {
//System.out.println("矩形");
return h * w;
}
public double getH() {
return h;
}
public void setH(double h) {
this.h = h;
}
public double getW() {
return w;
}
public void setW(double w) {
this.w = w;
}
}
---------------------------------
测试!这里提供了一个构造GeometricObject数组的方法!
也可以不用,根据需要自定义!
public class MTest {
// 计算总和
public static double sumArea(GeometricObject[] a) {
double result = 0.0d;
for (int i = 0; i < a.length; i ) {
result = result a[i].getArea();
}
return result;
}
// 创建一个GeometricObject数组
public static GeometricObject[] generateGOA() {
GeometricObject goa[] = new GeometricObject[3];
Circle goCir = new Circle();
goCir.setR(2);
goa[0] = goCir;
Cylinder goCy = new Cylinder();
goCy.setH(3);
goCy.setR(4);
goa[1] = goCy;
Rectangle goRec = new Rectangle();
goRec.setH(4);
goRec.setW(5);
goa[2] = goRec;
return goa;
}
public static void main(String[] args) {
System.out.print(MTest.sumArea(MTest.generateGOA()));
}
}
thanks!