当前位置: 技术问答>java相关
求解:书上一个例子有一条语句不理解(附程序),欢迎讨论、在线等待…………
来源: 互联网 发布时间:2015-04-11
本文导语: class point { double x, y, z; double distance( double x, double y, double z) { double result; result = Math.sqrt((x-this.x) * (x- this.x) + (y - this.y)*(y- this.y) + (z -this.z) * (z- this.z)); return result; } double distance(point p) ...
class point
{
double x, y, z;
double distance( double x, double y, double z)
{
double result;
result = Math.sqrt((x-this.x) * (x- this.x) + (y - this.y)*(y- this.y) + (z -this.z) * (z- this.z));
return result;
}
double distance(point p)
{
return distance (p.x ,p.y ,p.z);
}
}
class timePoint extends point
{
double time;
timePoint(double con_x, double con_y, double con_z,double con_time)
{
x = con_x;
y = con_y;
z = con_z;
time = con_time;
}
}
class usetimePoint
{
public static void main(String args[])
{
timePoint tp1 = new timePoint(0,0,0,0);
timePoint tp2 = new timePoint(1,1,1,10);
System.out.println("tp1 到 tp2 的距离是:"+tp2.distance(tp1));
System.out.println("tp1 运动到 tp2 的时间是:"+(tp2.time - tp1.time));
}
}
说明:此程序可以运行。
问题1:在point类第一个distance方法中,x-this.x中的x和this.x的植分别是什么?能 不能解释一下为什么?如果要输出那两个值该怎么做?
问题2:在point类第二个distance的形参是一个point对象,为什么哪个对象p没有实例化
就可以用了?他的参数p.x,p.y,p.z又是什么值?
{
double x, y, z;
double distance( double x, double y, double z)
{
double result;
result = Math.sqrt((x-this.x) * (x- this.x) + (y - this.y)*(y- this.y) + (z -this.z) * (z- this.z));
return result;
}
double distance(point p)
{
return distance (p.x ,p.y ,p.z);
}
}
class timePoint extends point
{
double time;
timePoint(double con_x, double con_y, double con_z,double con_time)
{
x = con_x;
y = con_y;
z = con_z;
time = con_time;
}
}
class usetimePoint
{
public static void main(String args[])
{
timePoint tp1 = new timePoint(0,0,0,0);
timePoint tp2 = new timePoint(1,1,1,10);
System.out.println("tp1 到 tp2 的距离是:"+tp2.distance(tp1));
System.out.println("tp1 运动到 tp2 的时间是:"+(tp2.time - tp1.time));
}
}
说明:此程序可以运行。
问题1:在point类第一个distance方法中,x-this.x中的x和this.x的植分别是什么?能 不能解释一下为什么?如果要输出那两个值该怎么做?
问题2:在point类第二个distance的形参是一个point对象,为什么哪个对象p没有实例化
就可以用了?他的参数p.x,p.y,p.z又是什么值?
|
简单的说:this的意思就是“这个对象”,具体要到你生成一个类的实例并调用此方法的时候才指明。具体说吧,在你的程序中,“System.out.println("tp1 到 tp2 的距离是:"+tp2.distance(tp1)); ”这里:这个对象tp2调用了它的这个distance方法,所以,此时方法里的this就是tp2,而另外三个参数“x,y,z”当然就是方法的参数tp1的了。如果你写成“tp1.distance(tp2)”的话,则正好相反了。
至于你的第二个问题,如果将第二个distance方法改写成这样可能你就更好理解了:
double distance(point p)
{
double result;
result=Math.sqrt((p.x-this.x)*(p.x-this.x)+(p.y-this.y)*(p.y-this.y)+(p.z-this.z)*(z-this.z));
return result;
}
原文实际上是在调用你上面第一个已经定义的方法而已。这里的p还是行参,为什么需要实例化呢。
至于你的第二个问题,如果将第二个distance方法改写成这样可能你就更好理解了:
double distance(point p)
{
double result;
result=Math.sqrt((p.x-this.x)*(p.x-this.x)+(p.y-this.y)*(p.y-this.y)+(p.z-this.z)*(z-this.z));
return result;
}
原文实际上是在调用你上面第一个已经定义的方法而已。这里的p还是行参,为什么需要实例化呢。
|
x是参数中的x,而this.x是double x,y,z中的x,如果不用this的话,你看是不是会混淆呢?我们就不知道到底是哪个x了,其实this代表的就是该类的一个对象,因此this.x代表的是类属性中的x了,
第二个问题:你在调用她的时候,肯定是跟的一个以实例化的对象,你最好把实参和形参的定义搞清楚。p.x,p.y,p.z当然就是类point中的三个属性了,即:double x,y,z中的x,y,z了。
第二个问题:你在调用她的时候,肯定是跟的一个以实例化的对象,你最好把实参和形参的定义搞清楚。p.x,p.y,p.z当然就是类point中的三个属性了,即:double x,y,z中的x,y,z了。
|
this的意思就是“这个对象”,
this.y说明的是当你生成这个类的对象时调用这个对象的y!例
point p=new point();
p.x=4;
p.y=5;
p.z=6;
p.distance(1,2,3);
result = Math.sqrt((4-1) * (4- 1) + (5 - 2)*(5- 2) + (6 -3) * (6- 3));
this.y=(new point()).distance(x,y,z).y
this.y说明的是当你生成这个类的对象时调用这个对象的y!例
point p=new point();
p.x=4;
p.y=5;
p.z=6;
p.distance(1,2,3);
result = Math.sqrt((4-1) * (4- 1) + (5 - 2)*(5- 2) + (6 -3) * (6- 3));
this.y=(new point()).distance(x,y,z).y