java构造器疑问 25
publicclassPoint{doublex,y,z;//通过构造器初始化对象的属性x.y.zpublicPoint(double_x,double_y,double...
public class Point {
double x,y,z;
//通过构造器初始化对象的属性 x.y.z
public 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;
}
public double distance(Point c) {
double result = Math.sqrt((x-c.x)*(x-c.x)+(y-c.y)*(y-c.y)+(z-c.z)*(z-c.z));
return result;
}
public static void main(String[] args) {
Point c = new Point(3,4,8);
Point d = new Point(0,0,0);
c.setX(10);
System.out.println(d.x);
System.out.println(c.x);
System.out.println(c.distance(d));
}
}
程序没问题,就是我有个疑问,distance这个方法,调用的参数,为什么不是c,而是Point c, 然后最后输出的时候,c.distance(d),为什么又不是Point d,实在搞不懂,麻烦详细讲解下 展开
double x,y,z;
//通过构造器初始化对象的属性 x.y.z
public 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;
}
public double distance(Point c) {
double result = Math.sqrt((x-c.x)*(x-c.x)+(y-c.y)*(y-c.y)+(z-c.z)*(z-c.z));
return result;
}
public static void main(String[] args) {
Point c = new Point(3,4,8);
Point d = new Point(0,0,0);
c.setX(10);
System.out.println(d.x);
System.out.println(c.x);
System.out.println(c.distance(d));
}
}
程序没问题,就是我有个疑问,distance这个方法,调用的参数,为什么不是c,而是Point c, 然后最后输出的时候,c.distance(d),为什么又不是Point d,实在搞不懂,麻烦详细讲解下 展开
1个回答
展开全部
额,直接调用c才奇怪呢,Point c,说明c是一个Point, 也就是说,这个方法的意思是,这个点与另一个点c之间的距离,调用的时候,c.distance(d),说明c与d之间的距离,这里的c不是那个参数,这里的d是实际参数,调用函数的时候,其值将会付给那个形式参数c,其实,如果你可以把c.distance(d)里面的变量名换一下,比如写成point1.distance(point2), 这样你明白了吗?
追问
point c 是对象还是c是对象?如果c是对象,那point c是什么东西?
public double distance(Point c)这里能用c嘛?c.setX(10);这句话c是对象,那前面那句没必要point c,直接c不就可以了吗?
追答
c是对象,point c,这个是方法里面参数的写法,point是类型,c是形参的名字,你回去看看java中方法那部分。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询