this
this表示当前对象,可以调用类的属性、方法和构造器
【一个问题】
我们在创建一个类的构造器时,构造器的形参名字该怎么选择?
class Dog(){
String name;
int age;
}
public Dog(String dName, int dAge){//能否将形参的名字直接改成属性名?
name = dName;
age = dAge;
}
public Dog(String name, int age){//编译器不会报错,但是根据变量的作用域原则(就近原则),构造器的方法体里面的name和age都是局部变量,而不是属性。会导致属性赋值失败。
name = name;
age = age;
}
解决方法:引出this关键字来解决
【理解】
-
简单的说,哪个对象调用,this就代表哪个对象
-
可以认为this相当于对象的隐藏属性,它指向的是自己
【使用】
-
this关键字可以用来访问本来的属性、方法、构造器
-
this用于区分当前类的属性和局部变量
注意:通过使用this可以明确访问的是类的属性而不是对应作用域的其他同名变量
- 访问成员方法的语法:this.方法名(参数列表);
(上面图片的两种方式有区别,但还没学到)
- 访问构造器语法:this(参数列表);注意只能在构造器中使用(即只能在构造器中访问另外一个构造器)
(构造器的名字跟类名相同,这里直接this并不需要写构造器的名字)
注意:这条语句必须放在构造器中第一条语句的位置上
- this不能在类定义的外部使用,只能在类定义的方法中使用。