在main方法中访问的类的私有成员

1 java access-modifiers

我们假设我们有以下代码:

 public class TestScope {
      private int a = 1;
         public static void main(String[] args) {
           TestScope ts = new TestScope();
           ts.a = 6;
           System.out.println(ts.a);
        }
    }
Run Code Online (Sandbox Code Playgroud)

为什么在线:ts.a = 6;我可以访问私有变量a?我认为私人会员不能在外面访问.我不会低估这个例子.

hel*_*922 6

静态方法仍然被认为是它们声明的类的一部分,因此可以访问私有方法/字段.

如果你在另一个类中有main方法(或任何其他静态方法或实例方法),那么你确实无法访问a.


Zac*_*h L 5

这是因为a并且main(String[])都是该类定义的一部分TestScope

Private表示只能在类定义中访问变量或方法.a是实例变量这一事实并不意味着它不能被同一个类中的静态公共方法访问.

如果public static void main(String[])是一个不同的类中,那么将无法访问tsa,因为a从其他类隐藏.