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)的引用了。
public static void main(String[] args) throws Exception {
new HelloB();
}
}
在上面这个例子中, thread 是一个匿名类对象,在它的定义中,它的 run 函数里用到了外部类的 run 函数。这时由于函数同名,直接调用就不行了。这时有两种办法,一种就是把外部的 run 函数换一个名字,但这种办法对于一个开发到中途的应用来说是不可取的。那么就可以用这个例子中的办法用外部类的类名加上 this 引用来说明要调用的是外部类的方法 run。
/*
1.区别成员变量和局部变量重名时,如下:
如果输出语句里面的num时,输出的时90,就近原则,
如果要输出10,就要用this.num
意思就是在一个方法内,如果有重名的变量,直接使用的就是局部变量,this.使用的就是成员变量
class Test {
public static void main(String[] args) {
Demo d = new Demo();
d.print();
}
}
class Demo {
int num = 10;
public void print(){
int num = 90;
System.out.println(num);
}
}