this到底代表什么呢?★★★★★
this就代表对象,代表哪个对象呢?哪个对象调用了this所在函数,this就代表哪个对象。
当构造函数之间进行互相调用时,该如何解决呢?
构造函数是对象初始化时调用的。
给哪个对象初始化呢?通过this关键字来记录住对象的地址。并通过this来明确被初始化的对象。
在构造函数中调用其他构造函数的格式: this(实参列表);就会调用对应的构造函数。
this关键字的另一个作用:
可以用this标识哪个变量是成员变量。这个标识可以省略不写。
但是,当局部变量和成员变量同名时,必须用this.来标识成员变量。
一个例子TestThis.java
public class TestThis {
public static void main(String[] args) {
Person2 p = new Person2(10,"daming");
p.show();
Person2 p1 = new Person2(20);
p1.show();
}
}
class Person2{
private int age;
private String name;
Person2(){
System.out.println("调用了无参构造函数");
}
Person2(int a){
this();
age = a;
System.out.println("调用了有参构造函数包含年龄"+"age="+age);
}
Person2(int a,String n){
this(a);
age = a;
name = n;
System.out.println("调用了有参构造函数包含年龄和名称"+"age="+age+"--"+"name="+name);
}
void show(){
System.out.println("调用了有参构造函数void---"+"age="+age+"--"+"name="+name);
}
}
/*
p.show();
调用了无参构造函数
调用了有参构造函数包含年龄age=10
调用了有参构造函数包含年龄和名称age=10--name=daming
调用了有参构造函数void---age=10--name=daming
p1.show();
调用了无参构造函数
调用了有参构造函数包含年龄age=20
调用了有参构造函数void---age=20--name=null
*/
参考博客:http://blog.csdn.net/anmei2010/article/details/4091227