在Java中,this
關(guān)鍵字是一個(gè)引用變量,它指向當(dāng)前對(duì)象。這個(gè)引用可以用于訪問當(dāng)前對(duì)象的成員(包括方法和屬性)。
以下是this
關(guān)鍵字的一些常見用途:
this
來區(qū)分它們。例如:public class MyClass {
private int x;
public void setX(int x) {
this.x = x; // 使用this引用當(dāng)前對(duì)象的屬性x
}
}
this()
來調(diào)用同一個(gè)類中的另一個(gè)構(gòu)造器。這有助于避免代碼重復(fù)。例如:public class MyClass {
private int x;
private int y;
public MyClass() {
this(0, 0); // 調(diào)用另一個(gè)構(gòu)造器
}
public MyClass(int x, int y) {
this.x = x;
this.y = y;
}
}
return this;
。這在鏈?zhǔn)秸{(diào)用中特別有用。例如:public class MyClass {
private int x;
public MyClass setX(int x) {
this.x = x;
return this; // 返回當(dāng)前對(duì)象以支持鏈?zhǔn)秸{(diào)用
}
}
super()
關(guān)鍵字。但是,如果父類沒有默認(rèn)構(gòu)造器(即沒有無參數(shù)的構(gòu)造器),則需要使用this()
來調(diào)用父類的有參構(gòu)造器。例如:public class ParentClass {
private int a;
public ParentClass(int a) {
this.a = a;
}
}
public class ChildClass extends ParentClass {
private int b;
public ChildClass() {
super(1); // 調(diào)用父類的有參構(gòu)造器
this.b = 2;
}
}
注意:在上面的例子中,ChildClass
的構(gòu)造器使用了this()
來調(diào)用父類的有參構(gòu)造器,而不是super()
。這是因?yàn)楦割悰]有默認(rèn)構(gòu)造器。