[英]How does non-static method access static members in java?
考虑一下:
class SomeClass
{
static int a;
int method()
{
int b = a;
return b;
}
}
如何a
是正在方法来访问? 它是this.a
或someClass.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
混淆 - 它是对象的引用。 静态字段属于一类,而不是一个对象,因此它是不正确的得到a
与this.a
而且,正如这里已经提到的:
实例方法可以直接访问类变量和类方法。
如果你的类中,你可以通过只调用访问a
从任何其他类,您将通过使用someClass.a
接收此静态成员
只要静态成员是公共的,您就可以使用任何类中的“SomeClass.a”。 对于私有成员,如果您确实需要访问该成员并在该类中,请创建一个访问器方法,只需将其指定为“a”即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.