评估静态私有变量(Java),不应';这不违法吗?
在您将此问题标记为重复问题之前,请确保您提供了自己的解释。非常感谢。请注意私有静态变量,它们不是实例变量 我有以下情况:评估静态私有变量(Java),不应';这不违法吗?,java,oop,access-modifiers,static-variables,private-members,Java,Oop,Access Modifiers,Static Variables,Private Members,在您将此问题标记为重复问题之前,请确保您提供了自己的解释。非常感谢。请注意私有静态变量,它们不是实例变量 我有以下情况: public class Statics { private static class Counter { private int data = 5; //Declared as private. // public Counter() throws IllegalAccessException { // throw
public class Statics {
private static class Counter {
private int data = 5; //Declared as private.
// public Counter() throws IllegalAccessException {
// throw new IllegalAccessException();
// }
public void bump(int inc) {
inc++;
data = data + inc;
}
}
public static void main(String[] args) throws IllegalAccessException {
Counter c = new Counter();
int rnd = 2;
c.bump(rnd);
c.data = 0; //How this possible? It is declared as private.
System.out.println(c.data + " & "+ rnd);
}
}
产出:0和2
我的问题是,我怎么可能从类外访问数据(私有静态)变量
在Java中,我们知道私有访问修饰符的成员不能从类外部访问
我们总是使用setter和getter来修改私有变量的值,不是吗?我遗漏了什么吗?因为类
计数器
是类静态的私有成员,所以可以从类内访问类的私有成员 我的问题是,我怎么可能从类外访问数据(私有静态)变量。
关于你的问题:
“您已经能够从类本身内部访问数据(私有静态)变量”(而不是在“Statics”类外部)“您可以检查这一点,因为计数器
是在静态
中定义的。如果您在静态
之外定义了计数器
,它将抛出您期望的错误。我们处理的是静态变量,而不是实例变量。那些将问题标记为重复的人提供了不正确/不相关的链接/引用。好吧,静态“变量”也是类的成员,因此至少第二个链接是有效的重复链接(没有检查第一个,但可能是相同的推理)