Java-面向对象-类的成员-this关键字的使用

122 阅读1分钟

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(形参列表)"。