簡體   English   中英

通過對象在靜態方法上使用非靜態變量? Java的

[英]Using a non static variable on a static method through an object? Java

既然我們不能在靜態方法中使用this ,並且我們也不能使用非靜態變量,為什么我們可以使用在靜態方法中使用非靜態變量的對象呢?

這就是我的意思:

public int x;
public int y;

public Account(int a, int b) {
    this.x = a;
    this.y = b;
}

public static void Swap(Account acc) {
    int holder;
    holder = acc.x;
    acc.x = acc.y;
    acc.y = holder;
}

因此Swap()將起作用,即使對象內部的變量不是靜態的。 我不明白這一部分。 會感激一些幫助。 TIA!

static方法無法訪問當前( this )實例的實例變量,因為在其上下文中不存在此類實例。

但是,如果向它們傳遞對實例的引用,則它們可以訪問對它們可見的任何實例變量和方法。

如果你的swap示例,如果該方法不是static ,你可以刪除acc參數並this實例變量進行操作:

public void swap() {
    int holder;
    holder = this.x;
    this.x = this.y;
    this.y = holder;
}

您不能在靜態方法中使用this ,因為Java不知道您引用的是哪個實例(這個)。

可以傳遞給一個對象作為參數的引用acc因為調用者指定傳遞該實例的靜態方法。

當靜態方法引用acc時,Java知道你指的是哪個實例。 因此,您可以使用任何可訪問的字段或acc方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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