首页  >  问答  >  正文

java - 为什么此私有静态变量能被访问呢?

class Test{
    private static int i = 1;
    
    public static void main(String[] args){
        Test test = new Test();
        System.out.println(test.i);  //此处为何能访问到私有的i变量呢?
    }
}

如果与Test类不同包,调用i变量却报错,为何?

高洛峰高洛峰2744 天前1386

全部回复(11)我来回复

  • 高洛峰

    高洛峰2017-04-18 10:49:37

    理论上,访问修饰符并非完全必要,不会影响程序逻辑。这个只是编译阶段为了帮助程序员写出更加安全的代码。
    我理解题主的疑惑,题主觉得这里使用this.i较为妥当(当然,去掉那个蹩脚的static关键字吧),这个观点可能还真会使一些人走火入魔。this.i较为妥当(当然,去掉那个蹩脚的static关键字吧),这个观点可能还真会使一些人走火入魔。
    记住:这些访问修饰符与执行上下文无关,比如private记住:这些访问修饰符与执行上下文无关,比如private只会在编译时检查你访问这个变量的代码是不是在当前类里面所写,就这么简单粗暴。

    回复
    0
  • 取消回复