this在java中的用法
阿新 • • 發佈:2018-12-22
this在java中的用法
1.使用this關鍵字引用成員變數
作用:解決成員變數與引數或區域性變數命名衝突的問題
public class Dog {
String name;
public Dog(String name) {
this.name = name;
}
}
2.使用this關鍵字引用成員函式。在方法中引用呼叫該方法的物件
作用:讓類中一個方法,訪問該類的另一個方法或例項變數
class Dog { public void jump() { System.out.println("正在執行jump方法"); } public void run() { Dog d = new Dog(); d.jump(); System.out.println("正在執行run方法"); } } public class DogTest { public static void main(String[] args) { Dog dog = new Dog(); dog.run(); } }
Dog類中run方法呼叫jump方法一定要通過物件呼叫,因為jump方法並沒有被static修飾。但不必在run()方法中重新定義一個Dog類,因為DogTest類中當程式呼叫run()方法時,一定會提供一個Dog物件,這樣就可以直接使用這個已經存在的Dog物件,而無須建立新的Dog物件。
因此通過this關鍵字就可以在run()方法中呼叫該方法的物件
即
public void run(){
this.jump();//Java允許省略this字首,即可直接寫成jump();
System.out.println("正在執行run方法");
}
static修飾的方法中不能使用this引用
例如:
public class DogTest { public void dog() { System.out.println("汪汪汪"); } public static void main(String[] args){ this.dog(); //報錯:Cannot use this in a static context。 //省略掉this的情況下:同樣報錯,因為在靜態方法中,不能直接訪問非靜態成員(包括方法和變數)。非靜態的變數是依賴於物件存在的,物件必須例項化之後,它的變數才會在記憶體中存在。 //解決辦法:法1.將dog()同樣設定為靜態 法2.先例項化物件,然後使用物件來呼叫函式 } }
3.使用this關鍵字在自身構造方法內部引用其它構造方法
在某個構造方法內使用this(引數列表),即可跳轉到其他構造方法
4.用this關鍵字代表自身類的物件
return this 即代表return整個自身類