this只存在於方法內部,用來代表呼叫改方法的物件。可以理解為每個方法內部都有一個局部變數叫this,每當初始化一個物件時,就把該物件的位址傳遞給了該物件每一個方法中的this變量,從而可以在方法內部使用這個的對象。
第一種情境 (建議學習:java課程)
#在一般方法中,在你的方法中的某個形參名與當前對象的某個成員有相同的名字,這時為了不至於混淆,你便需要明確使用this關鍵字來指明你要使用某個成員,使用方法是“this.成員名”,而不帶this的那個便是形參。 另外,還可以用「this.方法名稱」來引用目前物件的某個方法,但這時this就不是必須的了,你可以直接用方法名稱來存取那個方法,編譯器會知道你要調用的是那一個。
public class DemoThis { private String name; private int age; DemoThis(String name, int age) { setName(name); // 你可以加上this来调用方法,像这样:this.setName(name);但这并不是必须的 setAge(age); this.print(); } public void setName(String name) { this.name = name;// 此处必须指明你要引用成员变量 } public void setAge(int age) { this.age = age; } public void print() { System.out.println("Name=" + name + " Age=" + age);// 在此行中并不需要用this,因为没有会导致混淆的东西 } public static void main(String[] args) { DemoThis dt = new DemoThis("Kevin", "22"); } }
第二種情況
假設有兩個類,容器類Container和內容類Component,在Container的成員方法中需要呼叫Component類別的一個對象。 Component的建構函式中需要一個呼叫它的Container類別作為參數。
class Container{ Component comp; public void addComponent(){ comp=new Component(this); } } class Component{ Container myContainer; public Component(Container c){ myContainer=c; } }
第三種情況
建構方法不能想其他方法一樣被調用,只能在系統初始化一個物件時被系統調用。雖然建構方法不能被其他函數調用,但是可以被該類別的其他建構方法調用,這時用this即可。
class Person{ int age; String name; public Person(){ } public Person(int age){ this.age=age; } public Person(int age,String name){ this(age); this.name=name; } }
以上是java什麼時候用this的詳細內容。更多資訊請關注PHP中文網其他相關文章!