– 定义一个圆类(Circle),其所在的包为bzu.info.software;定义一个圆柱类Cylinder,其所在的包为bzu.info.com;定义一个主类A,其所在的包也为bzu.info.com,在A中生成一个Cylinder对象,并输出其体积。编译并运行该类
– 试着改变求体积方法的访问权限,查看并分析编译和运行结果
– 把Cylinder类和A类置于不同的包中,通过对求体积方法设置不同的访问权限,查看并分析编译和运行结果
Circle类:
package bzu.info.software;
public class Circle {
int radius;
double s;
public Circle(int r){
radius=r;
}
public void setRadius(int r){
radius=r; //用于对已有对象改变变量
}
public int getRadius(){
return radius; //用于得到已有对象变量
}
public double Sarea(){ //定义一个方法求圆的面积
s=3.14*radius*radius;
return s;
}
}
Cylinder类:
package bzu.info.com;
import bzu.info.software.Circle;
public class Cylinder {
double height;
Circle bottom;
Cylinder(int h,Circle c){
height=h;
bottom=c; //地址的传递
}
void setBottomRadius(int r){
bottom.setRadius(r);
}
int getBottomRadius(){
return bottom.getRadius();
}
double Volume(){ //定义一个方法求圆柱体的体积
return bottom.Sarea()*height; //调用圆的Sarea()方法与高相乘并返回
}
}
主类A:
package bzu.info.com;
import bzu.info.software.Circle;
public class Cylinder {
double height;
Circle bottom;
Cylinder(int h,Circle c){
height=h;
bottom=c;//地址的传递
}
void setBottomRadius(int r){ //用于修改圆柱体的底面半径
bottom.setRadius(r); //调用圆类的set方法修改圆的半径赋给圆柱体的底面半径
}
int getBottomRadius(){ //用于得到圆柱体的底面半径
return bottom.getRadius(); //调用圆类的get方法得到圆的半径并返回
}
double Volume(){ //定义一个方法求圆柱体的体积
return bottom.Sarea()*height; //调用圆的Sarea()方法与高相乘并返回
}
}
测试结果:
程序分析:用到很多的set方法和get方法用于方便修改已有对象的变量并得到,关于访问权限的问题,如果在另外一个包中的Circle类不加public,则另外包的Cylinder类和主类A将没办法使用Circle类中的方法,要想使用必须导入import那个包,如果将某类中的变量改成private,则变成私有,意思是只能在本类内部使用,而默认的是default,是包权限,在包内可以任意使用。