58,454
社区成员
发帖
与我相关
我的任务
分享
/*Shape抽象类*/
public abstract class Shape {
/*唯一的方法,抽象方法getArea(Shage)
* 参数为一个形状*/
public abstract double getArea(Shape sh);
}
/*圆类*/
public class Circle extends Shape{
/*成员变量
* 半径*/
private double r = 0;
/*构造函数*/
public Circle(double r)
{
this.r = r;
}
/*求面积函数*/
public double getArea(Shape sh) {
// TODO Auto-generated method stub
double s = 0;//面积
s = this.r * this.r * Math.PI;
return s;
}
}
/*矩形类*/
public class Rectangle extends Shape{
/*成员变量,长、宽*/
private double a = 0;
private double b = 0;
/*构造函数*/
public Rectangle(double a, double b)
{
this.a = a;
this.b = b;
}
/*继承、实现求面积函数*/
public double getArea(Shape sh) {
// TODO Auto-generated method stub
double s = 0;//面积
s = this.a * this.b;//求面积
return s;
}
}
/*三角形类*/
public class Triangle extends Shape{
/*成员变量
* 三条边的长度*/
private double a = 0;
private double b = 0;
private double c = 0;
/*构造函数*/
public Triangle(double a, double b, double c)
{
this.a = a;
this.b = b;
this.c = c;
}
/*继承、实现求面积函数*/
public double getArea(Shape sh) {
// TODO Auto-generated method stub
double s = 0;//面积
double p = (a + b + c)/2;
s = Math.sqrt(p*(p-a)*(p-b)*(p-c));//求面积
return s;
}
}
/*测试类*/
public class Test {
/*主函数*/
public static void main(String agrs[])
{
/*数组*/
Shape sh[] = new Shape[3];
/*创建三个类*/
sh[0] = new Circle(2);
sh[1] = new Rectangle(2, 3);
sh[2] = new Triangle(2, 2, 3);
/*输出面积*/
for (int i = 0; i < 3; ++i) {
System.out.println(sh[i].getArea(sh[i]));
}
}
}