class Point{
double x = 5.0;
double y = 5.0;
double z = 5.0; Point(double _x, double _y, double _z){
x = _x ;
y = _y ;
z = _z ;
} public void setX(double _x){
x = _x ;
}
public void setY(double _y){
y = _y ;
}
public void setZ(double _z){
z = _z ;
}

double getDistance(Point p){
return (x + y + z) ;
}
}
public class Test{
public static void main(String args []){
Point p = new Point(6.0, 6.0, 6.0) ;
Point p1 = new Point(2.0, 8.0, 2.0) ;
System.out.println(p.getDistance(p1)) ;
//这里很奇怪,p调用了getDistance方法,并且传了对象P1给方法,但
//getDistacne方法是用的不是p1对象的x,y,z而是P的x,y,z。 //p.setX(5.0) ;

//System.out.println(p.getDistance(new Point(12.0, 12.0, 12.0))) ;
}
}

解决方案 »

  1.   

    double getDistance(Point p){ 
    return (x + y + z) ; // 你写的不就是p1的x,y,z吗? 要用p的应该p.x + p.y + p.z

      

  2.   

    double getDistance(Point p){ 
    return ( p.x +p.y + p.z) ; 

    这样就没问题了
      

  3.   

    当然了,你的getDistance()方法是传进去了p1对象,但是方法内没有用到p1啊。
      

  4.   

    当然这样,
    因为double getDistance(Point p){ 
        return (x + y + z) ; 
      }
    方法中就没有用到传入Point对象p,而引用的x、y、z的值只为调用该方法的对象的属性x、y、z的值;
    如果你想返回的结果为传入对象x、y、z之和,必须指明
    double getDistance(Point p){ 
      return ( p.x +p.y + p.z) ; 

      

  5.   

    这样是肯定的System.out.println(p.getDistance(p1)) ; 
    这句话 你创建的是 p 的对象 ,那些 x,y,z 出创建p时传入的值,而p1也只是一个方法的参数而已,
    你若想返回 p1 的 x,y,z
    在 Point 中的
    double getDistance(Point p){ 
    return (p1.x + p1.y + p1.z) ; 
    } 就行了