this可理解为:当前对象或当前正在创建的对象
①在类的方法中, 我们可以使用"this.属性"或"this.方法"的方式,调用当前对象属性或方法。通常情况下,我们都选择省略"this."。特殊情况下,如果方法的形参和类的属性同名时,我们必须显式的使用"this .变量"的方式,表明此变量是属性,而非形参。
②在类的构造器中,我们可以使用"this.属性"或"this.方法"的方式,调用当前正在创建的对象属性或方法。通常情况下,我们都选择省略"this."。特殊情况下,如果构造器的形参和类的属性同名时,我们必须显的使用"this.变量"的方式,表明此变量是属性,而非形参。
在类的构造器中,可以显式的使用"this (形参列表)"方式,调用本类中指定的其他构造器。
构造器中不能通过"this (形参列表) "方式调用自己。
如果一个类中有n个构造器,则最多有n - 1构造器中使用了"this (形参列表) "。
规定: "this (形参列表) "必须声明在当前构造器的首行。
示例1:调用属性方法
class Person{
private String name ;
private int age ;
public Person(String name,int age){
this.name = name ;
this.age = age ; }
public void getInfo(){
System.out.println("姓名:" + name) ;
this.speak();
}
public void speak(){
System.out.println(“年龄:” + this.age);
}
}
示例2:调用构造器
class Person{
private String name ;
private int age ;
public Person(){ // 无参构造器
System.out.println("创建对象") ;
}
public Person(String name){
this(); // 调用本类中的无参构造器
this.name = name ;
}
public Person(String name,int age){
this(name) ; // 调用有一个参数的构造器
this.age = age;
}
public String getInfo(){
return "姓名:" + name + ",年龄:" + age ;
}
}