为什么我可以从main方法访问私有变量?

Kar*_*oly 9 java variables program-entry-point private

package com.valami;

 public class Ferrari
 {
  private int v = 0;


  private void alam()
  {
   System.out.println("alam");
  }

  public Ferrari()
  {
   System.out.println(v);
  }



  public static void main(String[] args)
  {
   Ferrari f = new Ferrari();
   f.v = 5;
   System.out.println(f.v);
  }

 }
Run Code Online (Sandbox Code Playgroud)

大家好!我有一个简单的问题....为什么我可以从main方法到达私有变量?我知道,我在收容班,但这是主要的.我相信主要不是包含它的类的一部分...然后我不会找到私人成员,但我可以....为什么?请帮忙... thx

Arj*_*jms 10

类可以访问相同类型的(其他)对象的私有实例变量.

以下也是可能的

public class Foo {

    private int a;

    public void mutateOtherInstance(Foo otherFoo) {
        otherFoo.a = 1;
    }
}
Run Code Online (Sandbox Code Playgroud)

你可以争论这是否合情合理,但这只是JLS指定的合法生活规则.

  • 投票 - 我从来不知道这是可能的.我是一个C#而不是Java,但我刚刚在C#中对它进行了测试,它的工作方式相同. (3认同)

Vik*_*tor 5

Main 是类的一部分,您已在类中声明了它:) main 不是对象的一部分,它不会是您从类创建的对象的任何部分,但它仍然是类的一部分。这对于任何静态函数都是正确的,因为 main 只是一个普通的静态函数,框架知道它应该在执行程序时查找。