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

时间:2011-01-17 22:57:47

标签: 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);
        }
    }

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

4 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:5)

这是因为amain(String[])都是类TestScope的定义的一部分

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

如果public static void main(String[])位于其他类中,则无法访问ts的{​​{1}},因为a对其他类隐藏。< / p>

答案 2 :(得分:2)

静态方法被认为是它所在类的“部分”,因此私有范围访问它的实例。几天前,here解决了同样的问题。

答案 3 :(得分:0)

你不在外面,你在同一个班级。