this 可以理解为:当前对象,或当前正在创建的对象。
this解决了什么问题?
public void setNmea(String n){
name = n ;
}
// 报错
public void setNmea(String name){
name = name;
}
如果set方法中传入的形参和成员变量同名,编译器无法区分,那this关键字用来指向成员变量。也就是当前对象的成员变量。
public void setNmea(String name){
this.name = name;
}
通常情况下,我们都选择省略“this.”。特殊情况下,如果构造器的形参和类的属性同名,我们必须显式的用"this.变量"的方式,表明此变量是属性,而非形参。
this调用构造器
我们可以在类的构造器中,显式的使用"this(形参列表)"的方式,调用本类中重载的其他的构造器。
public Person(){
this.eat();
}
public Person(String name){
this();
}
构造器中不能通过"this(形参列表)"的方式调用自己。
//报错
public Person(){
this();
}
- 如果一个类中声明了n个构造器,则最多有n -1个构造器中使用了"this(形参列表)"。
- "this(形参列表)"必须声明在类的构造器的首行!
- 在类的一个构造器中,最多只能声明一个"this(形参列表)"。