this.age = age;//右边的age就是setAge里的参数(int age),左边的this代表对象,也就是最上面的p1,也就是说p1调用setAge方法,this.age就是p1将自己的成员变量age赋值; 这样就把成员变量的age(就是private int age)与局部变量(setAge里的age,也就是等号右边的age)区分开来了。如果局部变量里的不是int age ,而是int a,就不需要用this来调用了.例如下面的代码2
}
}
复制代码
代码2:
class Person {
private int age;
public void setAge (int a) {
age = a;//这里的局部变量为a,与成员变量age不重名了,不需要区分成员变量与局部变量,所以不用this来代表当前对象(p1)的引用了。
}
}
复制代码
说到底就是怕你如果写成这样
pubilc void setAge (int age) {
age = age;//这么写俩age都是局部变量的了,所以无法赋值给成员变量上的age(就是private int age里的age),所以就用个this来代表当前对象(p1)的引用。成员变量用对象 . 来调用。也就是this. age调用成员变量age。
}这已经是我写过的最详细的解释了,希望楼主给分奖励。不明白可以继续问的。
public static void main(String[] args) throws Exception {
new HelloB();
}
}
在上面这个例子中, thread 是一个匿名类对象,在它的定义中,它的 run 函数里用到了外部类的 run 函数。这时由于函数同名,直接调用就不行了。这时有两种办法,一种就是把外部的 run 函数换一个名字,但这种办法对于一个开发到中途的应用来说是不可取的。那么就可以用这个例子中的办法用外部类的类名加上 this 引用来说明要调用的是外部类的方法 run。