簡體   English   中英

為什么不能在Java類的main方法中使用它?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM