设计一个求立方体体积的父类,包含一个显示底面各个形状信息的统一方法,信息显示方式 “类别+周长+面积”;一个计算和显示立方体体积的统一方法 设计三个子类(利用继承关系):圆柱、长方体、三棱柱,包含参数设置方法、底面周长计算方法、底面面积计算方法 设计一个测试类,输出底面信息和体积
首先,我们需要设计一个父类,三个子类:
确定父类为Volume,父类代码如下:
abstract class Volume { //创建父类
protected int species; //种类
protected double perimeter; //周长
protected double bottom_area; //底面面积
protected double h; //高
abstract void setR(int species ,double perimeter,double h); //
abstract void setBottomarea() ; //成员方法,计算底面积
}
接着设计三个子类:
//cylinder 圆筒
abstract class Cylinder extends Volume{
private double r;
void setR(int a ,double b) {
this.species=a;
this.h=b;
}
public Cylinder(int species ,double h,double r){
setR(species,h);
this.r=r;
}
void setBottom_area(){
bottom_area =3.1415926*r*r;
perimeter =3.1415926*r*4;
System.out.println("圆筒的底面面积 " +bottom_area+" 圆筒的体积 "+h*bottom_area);
}
}
//Cuboid 长方体
class Cuboid extends Volume{
double x,y;
void setR(int species, double h) {
this.species=species;
this.h=h;
}
public Cuboid(int species, double h, double x, double y){
setR(species,h);
this.x=x;
this.y=y;
}
void setR(int species, double perimeter, double h) {
}
void setBottomarea() {
bottom_area=x*y; //我们假设长方体的底面面积的长、宽分别为x,y
perimeter=4*(x+y+h);
System.out.println("长方体的底面面积 " +bottom_area+" 长方体的体积 "+h*bottom_area);
}
}
//prism 棱镜
public abstract class Prism extends Volume{
private double x,y,z ;
void setR(int a,double b) {
this.species =a;
this.h=b;
}
public Prism(int species, double h, double x,double y,double z){
setR(species,h);
this.x=x;
this.y=y;
this.z=z;
}
void setBottom_area(){
bottom_area=0.86602540*x*y*0.5;
perimeter =2*(x+y+z);
System.out.println("三棱柱的底面面积 " +bottom_area+" 棱镜的体积 "+h*bottom_area);
}
}
最后,题目的要求还需要我们对其进行一个测试:
public class Test{
public static void main(String[] args) {
Cylinder x1 = new Cylinder(1, 10, 4) { //创建有关圆筒的变量,并且给圆筒的种类编号为1,赋值高,半径等
@Override
void setR(int species, double perimeter, double h) {
}
void setBottomarea() {
}
};
Cuboid x2=new Cuboid(2,10,3,4);
Prism x3= new Prism(3, 10, 6, 6, 6) {
void setR(int species, double perimeter, double h) {
}
void setBottomarea() {
}
};
x1.setBottom_area(); //调用圆筒成员方法
x2.setBottomarea(); //调用长方形成员方法
x3.setBottom_area(); //调用三棱镜成员方法
}
}
完成了该题目的要求