【问题标题】:Private member of class accessed in main method在 main 方法中访问的类的私有成员
【发布时间】:2011-06-10 18:23:36
【问题描述】:

假设我们有以下代码:

 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? 我认为私人会员不能在外面访问。我不会低估这个例子。

【问题讨论】:

标签: java access-modifiers


【解决方案1】:

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

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

【讨论】:

  • 或更具体地说,静态方法在类中定义仍被视为该类的一部分。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

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

      如果public static void main(String[]) 位于不同的类中,那么它将无法访问tsa,因为a 对其他类是隐藏的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-28
        • 2023-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多