this关键字访问属性
前面曾提到过,类里面的属性名,和方法里的局部变量名,是可以重名的。还有封装那一节里的setter方法,构造方法那一节里的带参构造方法,参数名与属性名也重名了。在重名的情况下,如果在方法中访问这个重名,则默认是局部变量或参数,如果需要访问属性,则需要在属性前加上this关键字。
例1:
class Student{
private String name;
public Student(String name){
this.name=name;
}
public void setName(String name){
this.name=name;
}
public void show(){
String name="无姓名";
this.name=name;
}
}
this关键字调用方法
this关键字也可用于访问方法
例2:
class Student{
public void lesson(){
……
}
public void show(){
this.lesson();
}
}
this关键字调用本类的构造方法
构造方法是在实例化对象时被系统自动调用,在程序中不能像调用其他成员方法一样调用构造方法,但可以在一个构造方法中通过this关键字调用其他的构造方法。
例3:
class Student{
private String name;
public Student(){
System.out.println("调用了无参构造方法");
}
public Student(String name){
this();
this.name=name;
System.out.println("调用了带参构造方法赋初值:"+name);
}
}
public class Test(){
public static void main(String[] args){
Student stu=new Student("陈明明");
}
}
上面的代码输出:
调用了无参构造方法
调用了带参构造方法赋初值:陈明明
注意:
- 只能在构造方法中使用this调用其他的构造方法,不能在成员方法中通过this调用其他构造方法。
- 在构造方法中,使用this调用构造方法的语句必须位于第一行,且只能出现一次。
- 不能在一个类的两个构造方法中使用this互相调用。