当成员变量和局部变量重名的时候,可以用关键字this来区分。
this就是所在函数所属对象的引用。简单说:那个对象调用了this所在的函数,this就代表哪个对象。
this用法的小例子
class Person{
private String name;
Person (String name){
this.name=name;
}
public void getname(){
System.out.println(" "+name);
}
}
this也可以用于在构造函数中调用其他构造函数。
注意:只能定义在构造函数的第一行(否则编译不通过)。因为初始化动作要先执行。
this的第二个用法
class Person{
private String name;
private int age;
Person (String name){
this.name=name;
}
Person(String name,int age){
this(name);
this.age=age;
}
public void getnameage(){
System.out.println(name+" "+age);
}
}
下面的例子会在编译时报错
class Person{
private String name;
private int age;
Person(){
this("shj",11);
}
Person(String name,int age){
this();
this.age=age;
}
public void speak(){
System.out.println(age+" "+name);
}
}
recursive constructor invocation Person(String,int)
递归的 构造函数 调用 Person(String,int)