一.在构造方法中通过this关键字调用这个类的另一个构造方法,可以减少代码行数,提高代码的复用性(只能放在方法的第一行)
package oneHundredDayPlan.oneDay;
class Test {
private int number;
private String name;
private int age;
private double score;
public Test(int number){
this.number = number;
}
//this的第一种用法,在一个构造方法中调用另一个构造方法。好处是减少代码行数,提高代码的复用性
public Test(int number,String name){
// this.number = number;
this(number);//this调用其他方法必须放在第一行,否则编译报错
this.name = name;
}
public Test(int number,String name,int age){
// this.number = number;
// this.name = name;
this(number,name);
this.age = age;
}
public Test(int number,String name,int age,double score){
// this.number = number;
// this.name = name;
// this.age = age;
this(number,name,age);
this.score = score;
}
}
二.实例和构造方法内局部变量或参数与成员变量同名,成员变量在实例方法内被屏蔽时,可以使用this关键字调用
package oneHundredDayPlan.oneDay;
class Test {
private int number;
public int getNumber(){
return number;
}
public void setNumber(int number){
//this的第二种用法:当全局变量和局部变量同名的时候,局部变量会将全局变量屏蔽掉,
//使用this调用全局变量,解决屏蔽问题
this.number = number;
}
}
三.在一个实例方法内,访问当前实例的引用(作为方法的实参)
package oneHundredDayPlan.oneDay;
class Test {
private int number;
public Test(int number) {
this.number = number;
}
public void doSomething(){
// this的第三种用法,在一个实例方法内,访问当前实例的引用 //(谁调代表谁)
saySomething(this);
System.out.println(this);
}
public void saySomething(Test t){}
public static void main(String[] args) {
Test t = new Test(1);
t.doSomething();
System.out.println(t);
}
}