java传值,类与对象的组合与复用

java对象传值问题

按自己理解写了书上例题,在运行时发现编译正常,但运行报错,却没有提示原因,像这样

在这里插入图片描述

于是按照书上代码挨个查,发现少了加注释的这块,看完之后也是豁然开朗

public class 例8 {
	public static void main(String[] args) {
		Circle circle1=new Circle();
		circle1.setRadius(10);
		System.out.println("circle1:r="+circle1.getRadius()+" area="+circle1.CircleArea());
		Circle circle2=new Circle();
		circle2.setRadius(20);
		System.out.println("circle2:h="+circle2.getRadius()+" area="+circle2.CircleArea());
		
		Circular circular1=new Circular();
		circular1.setHeight(10);
		
//		circular1.setbottom(circle1);	// bottom与circle1建立连接,即circular1可用circle1的数据 
		
		System.out.println("circular1:h="+circular1.getHeight()+" volume="+circular1.Volume());
	}
}
class Circle{
	
	double radius;   //半径
	double area;	 //面积
	
	void setRadius(double r) {
		radius=r;
	}
	double getRadius() {
		return radius;
	}
	double CircleArea() {
		return radius*radius*3.14;
	}
}

class Circular{
	
	Circle bottom;
	double height;
	
//	void setbottom(Circle c) {		//设置bottom是一个Circle对象
//		bottom=c;
//	}
	void setHeight(double h) {
		height=h;
	}
	double getHeight() {
		return height;
	}
	double Volume(){
		return bottom.CircleArea()*height;
	}
	
}

1.这段代码意思是本来bottom是Circle类的对象,在这段函数里引用传值,使Circular类将Circle类的bottom对象变成自己的成员变量,Circular类的setbottom方法的形参为Circle,即bottom对象可在Circular类的其他方法中用Circle类中的方法。

在这里插入图片描述

2.Circular类将Circle类的bottom对象变成自己的成员变量使彼此关联后,则可在Circular的方法中调用Circle的数值,运行结果也正确。

在这里插入图片描述

运行结果:为了使结果明显,代码做了微调(圆锥体积没除以3)
在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值