class Point { double x,y; //方法名称必须与构造方法名保持一致 public Point(double _x,double _y){ x=_x; y=_y; } public double GetDistance(Point h){ return Math.sqrt((x-h.x)(x-h.x) (y-h.y)(y-h.y)); }
代码语言:javascript复制public void shuchu(){
System.out.println(x);
System.out.println(y);
}
}
public class TestConstructor{ public static void main(String[] args){ Point p =new Point(3.0,4.0); Point origin =new Point(0.0,0.0); System.out.println(p.GetDistance(origin)); p.shuchu(); System.out.println(x);//这是非法的
代码语言:javascript复制}
}
遇到的问题:(欢迎指正) ①为何类名要与构造方法名要相同? 解释: 一个类里面可有多个方法,但是构造方法是为了方便赋予对象初值,所以可以用Point(3.0,4.0)来赋值 而一个类里一般的方法或者属性要么用p.xxx来对对象进行赋值 ②为何我们传给p.GetDistance(origin)函数时,参数只给了orign,在其方法的定义中却用到了(x,y)的值? 解释:System.out.println(x);//这是非法的,这件事告诉我们,x是类里的属性名,我们不能使用,p.x作为一个对象的属性是可以调用的;System.out.println(p.x)是合法的。 在调用p.GetDistance(origin)之前是建立在对于p进行属性的初始化了,是p.x=3.0,p.y=5.0而非x,y有值。