1、调用成员变量,解决与局部变量名称冲突问题
calss Person {
int age; //成员变量age
public Person(int age) { //局部变量age
this.age = age; //将局部变量age的值赋给成员变量age。
}
}
将构造函数中的参数age变为a,在语法上没有任何问题,但程序可读性变差。若this去掉,又会导致成员变量和局部变量的名称冲突,在方法中无法访问成员变量age。在构造方法中如果使用“age”,则是访问局部变量,但如果使用“this.age”则是访问成员变量。
2、调用成员方法
class Person {
public void openMouth() {
.
.
.
}
public void speak() {
this.openMouth();
}
}
在speak()方法中,使用this关键字调用openMouth()方法。注意:此处的this关键字可以省略不写。
3、调用构造方法
构造方法是在实例化对象时被Java虚拟机自动调用的就,在程序中不能像其他方法一样去调用构造方法,但可以在一个构造方法中使用**“this([参数1,参数2····])”**的形式来调用其他的构造方法。
案例如下:
class Person {
public Person() {
System.out.println("无参的构造方法被调用了");
}
public Person(int age) {
this();
System.out.println("有参的构造方法被调用了");
}
}
public class Example {
public static void main (String[] args) {
Person p = new Person(18);
}
}
运行结果:
在实例化Person对象时,调用了有参的构造方法,在有参构造方法中又通过this()调用了无参的构造方法。
注意:
1、只能在构造方法中使用this调用其他的构造方法,不能再成员方法中使用。
2、在构造方法中,使用this调用构造方法的必须是该方法的第一条执行语句,且只能出现一次,否则会出现Constructor call must be the first statement in a constructor(调用构造函数必须是构造函数中第一条语句)的错误。
3、不能在一个类的两个构造方法中使用this互相调用。否则会出现Recursive constructor invocation Person() (递归使用构造函数Person())的错误。