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);
}
}
大家好!我有一个简单的问题。...为什么可以从main方法中获得一个私有变量?我知道,我在包含类中,但这是主要的。我相信主体不是包含它的类的一部分……那么我不会去找私人成员,但是我可以……为什么?请帮助... thx
Main是您班级的一部分,您已经在班级内部声明了它:)main不是对象的一部分,它不是您从类创建的对象的任何部分,但仍然是类的一部分。这对任何静态函数都是正确的,因为main只是框架知道执行程序时应该寻找的普通静态函数。
类可以访问相同类型的(其他)对象的私有实例变量。
以下也是可能的
public class Foo {
private int a;
public void mutateOtherInstance(Foo otherFoo) {
otherFoo.a = 1;
}
}
您可以争论是否合乎需要,但这只是JLS规定这是合法的生活规则。
main
方法在类Ferrari
中,因此可以访问私有变量,即使它是静态的。
嗯,main()
是包含类的一部分。实际上,main()
与其他所有方法一样,除了可以启动JVM并告诉它从命令行运行类的main()
方法。
只要私有变量与main()方法在同一类中,那么main()方法就可以访问它。通常,即使静态方法也可以访问同一类的实例的私有字段。
main方法的唯一特殊功能是用于告诉编译器程序应从何处开始执行。除此之外,它的行为与任何其他类方法一样,并且可以像其他任何类方法一样访问私有变量。
因为main是静态的,并且您的类尚未实例化。
例如,您没有可访问的Ferrari对象。您必须创建一个Ferrari对象,然后才能访问其成员。 static main是一种特殊的静态函数。您可以根据需要将其视为独立的。因此,如果您将主要方法移到了Ferrari之外,则可以预期必须创建一个Ferrari实例才能使用它...在这里也一样。]