Assessing a static private variable (Java), Shouldn't it be illegal?
本问题已经有最佳答案,请猛点这里访问。
在将此问题标记为重复问题之前,请确保提供自己的解释。谢谢您。请注意私有静态变量,它们不是实例变量。
我有以下场景:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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中,我们知道不能从类外部访问私有访问修饰符的成员。
我们总是使用setters&getter来修改私有变量的值,不是吗?我错过什么了吗?
由于类
关于你的问题:
"您已经能够从类本身内部访问数据(private static)变量(而不是在‘statics’类外部)。"