java中 类的组合与复用
在一个类中用另一个类创建对象的的问题
Circle
public class Circle {
double radius;
}
Circular
public class Circular {
Circle bottom;
double height;
}
TEST
public class TEST {
public static void main(String[] args) {
Circle circle = new Circle();//创建对象circle并分配内存
circle.radius=10.0;//对半径赋值
Circular circular = new Circular();//创建对象circular并分配内存
System.out.println("circle的引用:"+circle);//
System.out.println("圆锥的bottom的引用:"+circular.bottom);
circular.height=5;
circular.bottom = circle;//将circle的地址传递给bottom
System.out.println("circle的引用:"+circle);
System.out.println("圆锥的bottom的引用:"+circular.bottom);
System.out.println("修改circle的半径,bottom的半径同样变化");
circle.radius=20.0;//重新复制
System.out.println("bottom的半径:"+circular.bottom.radius);
System.out.println("重新创建circle,circle的引用将发生变化");
circle = new Circle();//重新创建一个Circle类的对象
System.out.println("circle的引用:"+circle);
System.out.println("但不影响circular的bottom的引用");
System.out.println("圆锥的bottom的引用:"+circular.bottom);
}
Circle circle = new Circle();//创建对象circle,分配内存
circle.radius=10.0;//赋值为10.0
Circular circular = new Circular();//创建对象circular,分配内存未赋值
circular.bottom = circle;//将对象circle的引用传递给circular的对象bottom
circle.radius=20.0;//修改radius的值,circle与circular的半径不变
circle = new Circle();//重现创建一个circle,原来circular的引用不变
运行结果如下
circle的引用:demo01.Circle@73549af8
圆锥的bottom的引用:null
circle的引用:demo01.Circle@73549af8
圆锥的bottom的引用:demo01.Circle@73549af8
修改circle的半径,bottom的半径同样变化
bottom的半径:20.0
重新创建circle,circle的引用将发生变化
circle的引用:demo01.Circle@548ea21d
但不影响circular的bottom的引用
圆锥的bottom的引用:demo01.Circle@73549af8
进程已结束,退出代码 0
总结:在一个类中用另一个类来定义对象时,(circular bottom;)该对象可以调用这个类里的成员变量,并且通过地址传递调用。所以当改变radius的值时并不会影响circular的半径。