[英]Why this cannot be used in the main method of a Java class?
我已經使用Java大約六個月了,但是對於this
語句的確切工作方式我有些茫然。 我知道它用於引用調用實例。 但是,為什么不需要在main方法中使用它來引用在main方法中創建的對象?
我認為,這始終是指優先於其他對象的當前對象。 在構造函數中,這是針對正在創建的新對象的,正確的。 在main方法中,this.x.method引用main語句中的對象。
問題: this關鍵字引用正在創建的當前對象嗎? 還是指被制成新對象的對象?
類:
public class DDHThisTest {
public int x = 0;
public int y = 0;
public DDHThisTest(int a, int b) {
this.x = a;
this.y = b;
}
public static void main(String[] args) {
DDHThisTest i = new DDHThisTest();
this.i.x = 10;
}
}
錯誤:
不能在靜態上下文中使用它
您無法使用this.ix
因為您無法在static
方法(在本例中為main()
引用實例變量。 要解決這個問題,只需在ix
之前刪除this
。
public static void main(String[] args)
{
DDHThisTest i = new DDHThisTest(1, 2);
i.x = 10;
}
注意:創建DDHThisTest
實例時, 請不要忘記將參數傳遞給構造函數,因為您尚未聲明沒有參數的構造函數。
在static
塊中時,沒有對象作用域。 這意味着您正在使用的類沒有特定的實例,因此沒有對“該類的實例”的引用。
Main是一個靜態方法,在創建DDHThisTest類的對象之前調用它。 因此,ypu正在嘗試ro引用尚未實例化的類的實例。 所以你得到了錯誤。 換句話說,您知道只能從靜態方法訪問靜態變量。 但是“ this”可以說是一個實例變量。 因此,您無法從靜態方法訪問它。
主要方法是靜態方法。 關鍵字this
是在對象/實例范圍中使用未在靜態塊。
只需替換this.ix = 10;
ix = 10;
你應該沒事的
i.x = 10;
在靜態函數中,沒有this
。
保留關鍵字“ this”以用作實例的一部分。 如果刪除“ this。”,則應該沒問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.