当前位置:  技术问答>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又是什么值?


|
简单的说: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还是行参,为什么需要实例化呢。


|
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了。

|
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


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 求解 求解 求解
  • Linux Shell编程从初学到精通 第四章课后习题2 求解
  • 有限元求解器 GetDP
  • 偏微分方程求解工具箱 DUNE
  • linux命令求解释....
  • 偏微分方程求解框架 Overture
  • 100分求解!!!!!
  • 编译内核时候出现的问题,求解
  • makefile求解
  • 求解ucos ii的一句代码
  • 求助linux下mysql 求解!
  • 求解啊,centos下 shutdown -h now 无效??
  • 求解windows下硬盘安装linux如何用linux引导
  • 关于linux shell的一个不明白的地方。求解
  • solaris安装不上,求解.............
  • [FreeBSD] 大神,求解,control socket : can‘t to any socket
  • ubuntu12.04求解
  • 100分求解如何查看内存最高使用值!!
  • 高分求解---如何在DOS下查杀欢乐时光病毒?用哪种杀毒软件?Windows98没法进入了!
  • 求解struct的大小


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3