繁体   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