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);
}
}
蓝色的this是代表本实例,也就是调用本实例的distance(p)方法,这个是可以省略的。
红色的this也是代表本实例,只不过此时的this是代表一个参数传入而已。
因为你的函数在定义中已经指定传入的参数是一个Point类的对象——distance(Point p)。
而此时的this正式代表本Point类的一个对象,所以作为参数传递进去,但是此时这个this不能够省略。
通过结果发现r和r1的结果是相同的。
即p2.distance3(p1)=p1.distance(p2)。
this就是代表当前调用这个函数的对象,如果p2.distance3(p1),则this就代表p2 |