簡體   English   中英

非靜態方法如何訪問java中的靜態成員?

[英]How does non-static method access static members in java?

考慮一下:

class SomeClass
{
   static int a;
   int method()
   {
      int b = a;
      return b;
   }
}

如何a是正在方法來訪問? 它是this.asomeClass.a

編輯:對不起,如果我不清楚我的問題。 我想知道的是:*是否有一個 [在方法 ]關聯的隱藏SomeClass的或者是一個簡單 [在方法 ]正在訪問類的成員?

它只是a :類的任何實例的相同字段。 如果需要明確的消歧,可以編寫someClass.a

仔細考慮為什么你需要一個非靜態方法來返回一個靜態成員:它看起來像一個代碼“聞到”我。

我將編輯您的示例,以使其看起來更正確:

public class SomeClass
{
   private static int a = 1;
   public int method()
   {
      int b = a;
      return b;
   }
}

int b = a; 等於int b = SomeClass.a;

不要與this混淆 - 它是對象的引用。 靜態字段屬於一類,而不是一個對象,因此它是不正確的得到athis.a

而且,正如這里已經提到的:

實例方法可以直接訪問類變量和類方法。

如果你的類中,你可以通過只調用訪問a

從任何其他類,您將通過使用someClass.a接收此靜態成員

只要靜態成員是公共的,您就可以使用任何類中的“SomeClass.a”。 對於私有成員,如果您確實需要訪問該成員並在該類中,請創建一個訪問器方法,只需將其指定為“a”即可。

暫無
暫無

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

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