(Java)如果实例变量不能被引用,那么它们是否可以从其他类引用,除非它们是静态的,这是什么意思?

时间:2016-01-23 19:09:31

标签: java static private instance-variables

我理解除非将实例变量声明为私有,否则可以从其他类引用和更改它们。我知道为什么这会成为一个问题。

然而,我不明白,如果这些变量不能被声明为静态而无法从其他类引用,那么我们应该将这些变量声明为私有。

我们可以通过不将它们声明为静态来完成同样的事情吗?

如果这个问题的答案显而易见,我很抱歉,但我最近才开始学习Java语言和OOP。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

这是一种误解。 privatestatic没有任何关系。这将说明private如何运作(尽管代码相当丑陋 - 我只是想让事情变得简单,请不要为此抨击我):

class PublicAttribute{
    public Object someObject;
}

class PrivateAttribute{
    private Object someObject;
}

PublicAttribute pub = new PublicAttribute();
pub.someObject = "Hello World"; //valid

PrivateAttribute priv = new PrivateAttribute();
priv.someObject = "Hello World"; //invalid, we can't access someObject, since it's private
另一方面,

static的工作原理如下:

class SomeObject{
    public static String staticString;
    public String notStatic;
}

SomeObject.staticString = "Hello World"; //valid
SomeObject.notStatic = "Hello World"; //invalid, we need an instance
new SomeObject().notStatic = "Hello World"; //valid, since we access the attribute of an object

这两个nutandbolts教程应该有所帮助:access modifiersclass members