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 ; } }