java 中 小程序看不懂,帮忙解释一下

这是我在书上看到的实例,看不懂,请高手帮我逐条解释一下packagechapter7publicclassSphere{privatestaticdoublePI=3.1... 这是我在书上看到的实例,看不懂,请高手帮我逐条解释一下
package chapter7
public class Sphere
{
private static double PI=3.14; //1.是定义类变量

private double radius;
private double xCenter;
private double yCenter;
private double zCenter; //2.定义实例变量
public Sphere(double r,double x,double y,double z)
{
this.radius =r;
this.xCenter =x;
this.yCenter =y;
this.zCenter=z;
} //3.这段看不懂是是什么,定义的方法么?还有为什么要用this,指代什么呢。
public double getVolume()
{
double r = this.radius; //4.这是定义变量么,那后面赋值为什么是this.radius, 它和前面那一块this.radius=r这个有什么不一样,为什么这两个this.radius在等号的左右位置不一样
System.out.println("当前r值"+r);
double volume = 4/3*PI*r*r*radius; //5.这是求球体的体积不是r的立方可以了么,为什么两个r后要来一个radius,这个radius是前面定义的实例变量么
return volume;
}
public double getVolume(double radius)
{
this.radius= radius;
double volume = 4/3*PI*this.radius*this.radius*radius;
return volume;
} //6.这两个getVolume方法是不是只是一个带形参一个不带的区别
public static void main(String[] args)
{Sphere globe = new Sphere(4,2,3,0);
Sphere ball = new Sphere(5,3,2,1);
System.out.println("globe体积:"+globe.getVolume());
System.out.println("ball体积:"+ball.getVolume());
}
}
展开
 我来答
zmz571
2009-08-02
知道答主
回答量:24
采纳率:0%
帮助的人:0
展开全部
//3.这段看不懂是是什么,定义的方法么?还有为什么要用this,指代什么呢。
你注释这的是构造方法,这的this可以省去,指明this后面的属性是这个类本身的属性,构造方法主要是用来赋初值的
//4.这是定义变量么,那后面赋值为什么是this.radius, 它和前面那一块this.radius=r这个有什么不一样,为什么这两个this.radius在等号的左右位置不一样
你这的注释,this和上面意思一样,这句话是说,把这个类的radius的值
赋给局部变量r,所以在右面,而在上面的构造方法中是把参数的值赋给属性
//关于你第5个注释,体积公式为4/3 *PI*r*r*r(立方) 由于在注释4中r=radius所以在这r和radius可以互换
//6 恭喜你,这就是方法的重载,他可以为你提供很多便利,你的观察完全正确
梁羽BD
2009-08-01
知道答主
回答量:49
采纳率:0%
帮助的人:21.9万
展开全部
ÏÒæÄÇへつ
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
卫星3D看世界
2009-08-01 · TA获得超过909个赞
知道小有建树答主
回答量:461
采纳率:66%
帮助的人:165万
展开全部
定义的是 getVolume() 求体积方法

this 是指自己啊
像 this.radius 就是指自己的半径
如 Sphere globe = new Sphere(4,2,3,0);
那么 globe 中 getVolume() 里 this.radius 就是 4

然后 r= this.radius 就把 半径 4 赋值给了 r,因此后面那个体积其实就是 4/3 * PI * r*r*r,人家在忽悠初学者呢!!!

后面的 getVolume(double radius)
就是给定你一个 半径,要你求他的体积, globe.getValume(5) 就可以获取到 半径为 5 的球体体积。。。。

汗。。。。 这号问题。。。。这种程序在做什么哦。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wlj04122
2009-08-01 · TA获得超过189个赞
知道答主
回答量:144
采纳率:0%
帮助的人:121万
展开全部
3.不是定义的方法,是用定义的变量接收函数里传过来的变量值,this相当于定义的Sphere类变量,因为只有类变量才能调用自己里面的变量和函数
4.是在定义变量的同时,也给变量赋了值,它的值就是上面this.radius的值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友27609ef1b6
2009-08-01 · TA获得超过155个赞
知道答主
回答量:239
采纳率:0%
帮助的人:189万
展开全部
因为变量radius;xCenter;yCenter;zCenter都是私有的,外界只能通过调用它的Sphere方法来给他们赋值,而this.是指出当前类中的成员变量也就是radius;xCenter;yCenter;zCenter;

前面那个是设置值 后面的getVolume是取值。

至于你说的那个为什么不用r立方 其实在这个方法里面r和radius是一样的

2个getVolume方法就是你说的那个区别。就是通过看有没有参数来判断要调用哪个。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liushebiao
2009-08-01 · TA获得超过3336个赞
知道小有建树答主
回答量:724
采纳率:0%
帮助的人:385万
展开全部
3.this代表当前对象,这个函数是个构造函数,其含义就是为当前对象的几个属性赋值例如this.radius =r;就是把r的值赋给当前的对象.

4.就是把上面的步骤反过来,将当前对象的属性radius的值赋给新声明的局部变量double r

5.因为4中的r的值和radius是相等的,所以,这里怎么写都无所谓,不过规范起见还是r*r*r比较合适.

6.这是函数重载的用法,函数名相同,但是参数表不同.是java语言灵活性的体现,(副作用是一定程度上降低可读性,但是总体影响不大)

题外话,代码很混乱,不是很优雅的说..
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式