本帖最后由 郑义 于 2012-9-1 16:19 编辑
第一个this是代表本实例,也就是调用本实例的distance(p)方法,这个是可以省略的。
第二个this也是代表本实例,只不过此时的this是代表一个参数传入而已。
因为你的函数在定义中已经指定传入的参数是一个Point类的对象——distance(Point p)。
而此时的this正式代表本Point类的一个对象,所以作为参数传递进去,但是此时这个this不能够省略。- class Point
- {
- private int x,y;
- public Point(int x,int y)
- {
- this.x = x;
- this.y = y;
- }
- public double distance(Point p)
- {
- return Math.sqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y));
- }
- public double distance3(Point p)
- {
- return p.distance(this);
- }
- }
- public class Test2
- {
- public static void main(String[] args)
- {
- Point p1 = new Point(3,5);
- Point p2 = new Point(4,6);
- double r = p2.distance3(p1);
- double r1 = p1.distance(p2);
- System.out.println(r==r1);
- }
- }
复制代码 通过结果发现r和r1的结果是相同的。
即p2.distance3(p1)=p1.distance(p2)。
this就是代表当前调用这个函数的对象,如果p2.distance3(p1),则this就代表p2 |