This的用法
1.基礎用法-類別的成員變數
在 Java 中,this
關鍵字用於指向當前對象,這在多個變數具有相同名稱(例如,方法參數和類成員變數)的情況下特別有用。
假設你有一個類,其中有一個成員變數 A
,並且你想通過構造函數或某個方法來初始化它。在這種情況下,你可能會這樣做:
public class MyClass {
private int A; // 這是一個成員變數
public MyClass(int A) {
this.A = A; // 'this.A' 指的是成員變數,而 'A' 是方法的參數
}
public void setA(int A) {
this.A = A; // 同樣,'this.A' 是成員變數,'A' 是方法的參數
}
public int getA() {
return this.A; // 這裡,'this' 是可選的,因為沒有名稱衝突
}
}
//在這個例子中,this.A = A; 這行碼做了以下事情:
//this.A 指的是類 MyClass 的成員變數 A。
//等號右邊的 A 是構造函數 MyClass(int A) 或方法 setA(int A) 的參數。
//this.A = A; 這行碼將參數 A 的值賦給成員變數 A。
2. 同類中的對象的其他方法
this
關鍵字主要用於指向當前實例(對象)的變數和方法,而不是函數或方法本身。換句話說,this
不能用來指向函數或方法。
但!!!!是 ! ! ! ,你可以使用 this
來調用該類的其他方法,這樣做通常是為了在同一個類的多個方法之間共享某些行為或數據。例如:
public class MyClass {
private int x;
public MyClass(int x) {
this.x = x;
}
public void methodOne() {
System.out.println("Method One");
this.methodTwo(); // 使用 'this' 來調用同一個類的另一個方法
}
public void methodTwo() {
System.out.println("Method Two, x = " + this.x);
}
public static void main(String[] args) {
MyClass obj = new MyClass(10);
obj.methodOne(); // 輸出將會是 "Method One" 接著是 "Method Two, x = 10"
}
}
3.接下來都是特殊的用法- **方法鏈接(Chaining)**:
在一個方法中返回 `this` 可以實現方法鏈接。
public class MyClass {
private int x;
public MyClass setX(int x) {
this.x = x;
return this; // 返回當前對象以實現方法鏈接
}
}
使用方法:
MyClass obj = new MyClass();
obj.setX(5).setX(10); // 方法鏈接
4. **作為方法參數**:`this` 可以作為參數傳遞給其他方法。
public void myMethod(MyClass obj) {
// do something
}
public void anotherMethod() {
myMethod(this); // 將當前對象作為參數傳遞
}
5. **在建構函數中調用其他建構函數**:
使用 `this()` 可以在一個建構函數中調用同一類的另一個建構函數。
public class MyClass {
public MyClass() {
this(5); // 調用另一個建構函數
}
public MyClass(int x) {
// do something
}
}