简单说,分两种:
1、代表类所定义的对象:this.XXX
当类中要用到某个对象的成员变量时,此时还没定义具体的对象,用this就正好解决了这个问题;
例如:
class Person
{.. //为便于直观理解,可按下文描述来看:
Person(String name) //Person(String name1)
{ //{
this.name = name; //this.name = name1; //也就是说当name1和name名字都是name时,this可以用于区分;
} //}
..
}
2、构造函数之间用于相互调用:this()
例如:
class Person
{
private String name;
private int age;
{ //析构代码块
System.out.println("code run");
}
/*下面定义了三种不同传入参的构造函数,分别打印不同内容;
name name1 name2都可以写成name,此处为了便于自己理解,写为不同; */
Person()
{
System.out.println("a: person");
}
Person(String name1)
{
this(); //功能二,调用了构造函数Person(),this语句放在了构造函数的第一行。;
this.name = name1; //功能一,代表类中的对象;
System.out.println("b: person");
}
Person(String name2,int age2)
{
this(name2); //功能二,构造函数间的调用用this(),调用了构造函数Person(String name)
this.age = age2;
System.out.println("c: person");
System.out.println("name:"+this.name+" ,age:"+this.age);
}
}
class PersonDemo4
{
public static void main(String[] args)
{
Person p = new Person("lisi",30);
// System.out.println("p.name="+p.name+" ,p.age="+p.age); //不能直接打印private类型的参数
}
}
以下是运行结果,可以看出构造函数间的调用流向,且给对象赋值成功:
code run
a: person
b: person
c: person
name:lisi ,age:30 |