基本定义
this的作用和其词义很接近
1、在方法内部使用,即,这个方法所属对象的引用
2、在构造器内部使用,表示该构造器正在初始化的对象。
this表示当前对象,可以调用类的属性、方法和构造器
当在方法内需要用到调用该方法的对象时,就用this
使用
1、this可以用来修饰属性、方法、构造器
2、this修饰属性和方法,this可理解为当前对象或当前正在创建的对象
1)在类的方法中,可使用”this.属性“或”this.方法“的方式,调用当前对象属性或方法,通常情况下都省略”this.“
特殊情况:
如果当前方法形参和类的属性同名时,必须显示的使用”this.变量“来表明此变量是属性,而非形参,即,可以用this区分局部变量和属性
如:this.name = name;
PS:如果形参和属性不重名,其实也可以不使用name,如name = n
2)在类的构造器中,可使用”this.属性“或”this.方法“的方式,调用当前正在创建的对象属性或方法,通常情况下都省略”this.“,特殊情况,如果构造器的形参形参和类的属性同名时,必须显示的使用”this.变量“来表明此变量是属性,而非形参
3、调用构造器
1)在类的构造器中,可显示的使用"this(形参列表)"方法,调用该类中指定的其他构造器
2)构造器中不能通过"this(形参列表)"调自己,会有死循环的问题
3)如果一个类中有N个构造器,则最多有N-1构造器可以使用"this(形参列表)"
4)"this(形参列表)",必须放在当前构造器的首行
5)构造器内部,最多只能声明一个"this(形参列表)",用来调用其他构造器
代码示例
public class Person3 {
public static void main(String[] args) {
PersonPerson p = new PersonPerson();
p.setName("Jerry");
System.out.println(p.getName());
System.out.println("*********************");
PersonPerson p2 = new PersonPerson("Jerry",25);
System.out.println(p2.getAage());//25
}
}
class PersonPerson{
private String name;
private int age;
public PersonPerson() {
this.eat();
String info = "testtest";
System.out.println(info);
}
public PersonPerson(String name) {
this();//当前与调用public PersonPerson()这个构造器
this.name = name;
}
public PersonPerson(int age) {
this.age = age;
}
public PersonPerson(String name, int age) {
this(age);//当前与调用public PersonPerson(intage)这个构造器
this.name = name;
//this.age = age;
}
// public void setName(String n) {
// name = n;
// }
public void setName(String name) {
//this.name为属性,=右边的name为形参
this.name = name;
}
public String getName(){
return name;
}
public void getAge(int age) {
this.age = age;
}
public int getAage() {
return age;
//也可以写成this.age
}
public void eat() {
System.out.println("eat");
//也可以写this.eat();通常都省略
}
public void study() {
System.out.println("study");
}
}