this关键字的用法
this关键字可以用来访问本类的属性、方法、构造器
运行下列代码
public static void main(String[] args) {
Cat cat = new Cat();
cat.miao();
cat.twice();
Cat cat1 = new Cat("who");
}
class Cat{
private String name="皮蛋";
public Cat(String name){
this();//访问本类的Cat()无参构造器
this.name = name;
System.out.println("这是Cat类的(String name)构造器");
}
public Cat(){
System.out.println("Cat的无参构造器");
}
public void miao(){
System.out.println("小猫"+this.name+"喵喵叫");//this访问本类的name属性
}
public void twice(){
System.out.println("twice里的miao方法");//this访问本类的maio方法
this.miao();
}
}
结果如下图所示
1.主方法中先用无参构造器创建了一个Cat类对象,所以第一句话输出的是Cat的无参构造器。
2.调用了cat.miao方法,里面的this.name访问了本类的name属性。
3.调用了cat.twice方法,里面的this.miao访问了本类的miao方法。
4.主方法中用有参构造器创建了一个Cat类对象,this()访问了本类的无参Cat()构造器,所以会先输出Cat的无参构造器。
由此可知,
访问成员属性的语法:this.属性名;
访问成员方法的语法:this.方法名(参数列表);
访问构造器语法:this(参数列表);
注意只能在构造器中使用(即只能在构造器中访问另外一个构造器)。
this关键字用来区分属性和形参
还是上面的代码
class Cat{
private String name="皮蛋";
public Cat(String name){
this.name = name;
}
可以看到Cat类的构造器的形参(String name)与Cat类的属性名name相同
为了区别两者,可以用this.name来表示Cat类的属性名name。