求java大一的一道抽象类编程的代码。

zxh524457 2012-04-14 11:20:09
抽象类编程:设计一个类层次,定义一个抽象类--形状,其中包括有求形状的面积的抽象方法。继承该抽象类定义三个类:三角型、矩形、圆。 再定义一个以你的名字全拼为名的测试类,分别创建一个三角形、矩形、圆存入一个数组中,将数组中各类图形的面积输出。
注:三角形面积s=sqrt(p*(p-a)*(p-b)*(p-c)) 其中,a,b,c为三条边,p=(a+b+c)/2
...全文
793 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sffx123 2012-05-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
我来接分。

Java code


/*Shape抽象类*/
public abstract class Shape {
/*唯一的方法,抽象方法getArea(Shage)
* 参数为一个形状*/
public abstract double getArea(Shape sh);

}




/*圆类*/
public class ……
[/Quote]建议抽象类的getArea()方法不用传参,子类继承之后会重写该方法,调用的时候也是调用自己的,
子类.getArea() or 子类.getArea(子类)后面不符合面向对象的思想。
  • 打赏
  • 举报
回复
这是大学里java书上的习题。来这里求答案了。
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
抽象类编程:设计一个类层次,定义一个抽象类--形状,其中包括有求形状的面积的抽象方法。继承该抽象类定义三个类:三角型、矩形、圆。 再定义一个以你的名字全拼为名的测试类,分别创建一个三角形、矩形、圆存入一个数组中,将数组中各类图形的面积输出。
注:三角形面积s=sqrt(p*(p-a)*(p-b)*(p-c)) 其中,a,b,c为三条边,p=(a+b+c)/2
[/Quote]


//形状类定义为抽象类---不能被实例化
public abstract class Shape {

//计算面积的抽象方法
public abstract double getArea();

}



//圆形类继承父类---形状类
public class Circle extends Shape{

private double radius = 0; //圆的半径

private final static double PI = 3.14; //圆周率---常量

//圆类的带参构造函数
public Circle(double radius)
{
this.radius = radius;
}

//重写父类---形状类计算面积的抽象方法
public double getArea()
{
return (PI * radius * radius);
}

}



//矩形类继承父类---形状类
public class Rectangle extends Shape{

private double width = 0; //定义矩形的宽

private double height = 0; //定义矩形的高

//矩形类的带参构造函数
public Rectangle(double width, double height)
{
this.width = width;
this.height = height;
}

//重写父类---形状类计算面积的抽象方法
public double getArea()
{
return (width * height);
}
}



//三角形类继承父类---形状类
public class Triangle extends Shape{

private double bottom = 0; //三角形的底

private double height = 0; //三角形的高

//三角形类的带参构造函数
public Triangle(double bottom, double height)
{
this.bottom = bottom;
this.height = height;
}

//重写父类---形状类计算面积的抽象方法
public double getArea()
{
return (this.bottom * this.height / 2);
}

}


import java.util.Arrays;

public class Test {

public static void main(String[] args) {

//创建一个数组存储多个形状对象
double[] d = new double[] {new Triangle(3, 4).getArea(),new Circle(1).getArea(),new Rectangle(2, 2).getArea()};

//打印输出图形的面积
System.out.println("三角形的面积是:"+d[0]);
System.out.println("圆形的面积是:" + d[1]);
System.out.println("矩形的面积是:" + d[2]);

//对图形的面积进行从小到大排序
Arrays.sort(d);

//循环遍历输出图形的面积
System.out.print("排序后的面积:");
for (int i = 0; i < d.length; i++) {
System.out.print(d[i]+"\t");
}
}
}

LZ,功能已经实现,看看。
xttxqjfg 2012-05-10
  • 打赏
  • 举报
回复
像这种基础性的测试楼主还是自己尝试着去写为好,对自己的基础有好处的……
传说中的大神 2012-04-15
  • 打赏
  • 举报
回复
代码 简单如下:没有实现.
/**
* 形状
*/
abstract class Shape {
public abstract double getArea(Shape shape);

public static void main(String[] args) {
Trigon trigon = new Trigon();
Rectangle rectangle = new Rectangle();
Circularity circularity = new Circularity();
Shape[] shapeArr = new Shape[3];
shapeArr[0] = trigon;
shapeArr[1] = rectangle;
shapeArr[2] = circularity;

for (Shape s : shapeArr) {
System.out.println(s.getArea(s));
}
}
}

/**
* 三角形
*/
class Trigon extends Shape {

@Override
public double getArea(Shape shape) {
// TODO Auto-generated method stub
return 0;
}

}

/**
* 矩形
*/
class Rectangle extends Shape {

@Override
public double getArea(Shape shape) {
// TODO Auto-generated method stub
return 0;
}

}

/**
* 圆
*/
class Circularity extends Shape {

@Override
public double getArea(Shape shape) {
// TODO Auto-generated method stub
return 0;
}

}
「已注销」 2012-04-15
  • 打赏
  • 举报
回复
我来接分。

/*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]));
}
}
}


悠悠-我心 2012-04-15
  • 打赏
  • 举报
回复
看上去行 试试

58,452

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧