this 关键字其实可以理解为当前对象,在类的方法或构造器中,我们可以使用 “this . 属性” 或者 “this . 方法”的形式,调用当前对象属性或方法。但是,通常情况下,我们都选择了省略 “this” 。特殊情况下,如果方法或构造器的形参和类的属性同名时,我们必须显式使用 “this . 变量” 的方式,表明此变量是属性,而非形参。
目录
this关键字的修饰范围
this可以用来修饰:属性,方法,构造器
this调用构造器
1. 我们在类的构造器中,可以显式的使用 “this(形参列表)” 的方式,调用本类中指定的其他构造器
2. 构造器中不能通过 “this(形参列表)” 的方式调用自己
3. 如果一个类中有 n 个构造器,则最多有 n - 1 个构造器使用了 “this(形参列表)”
4. 规定:“this(形参列表)” 必须声明在当前构造器的首行
5. 构造器内部,最多只能声明一个 “this(形参列表)” ,用来调用其他的构造器
this关键字的使用
public class Test {
public static void main(String[] args) {
Person p = new Person("Tom");
System.out.println(p.getName());
}
}
class Person{
private String name;
private int age;
public Person() {
this.study();
}
public Person(String name) {
this(); // 调用空参构造器
this.name = name;
}
public Person(int age) {
this.age = age;
}
public Person(String name,int age) {
this(age); // 调用age构造器
this.name = name;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public void study() {
System.out.println("人可以学习");
}
}
>>> 人可以学习
Tom
本例中,如果不指明 this,则重名的形参会被系统混淆,name = name 的情况,系统会认为是形参赋值给形参,而非属性。