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
答案 0 :(得分:10)
类可以访问相同类型的(其他)对象的私有实例变量。
以下也是可能的
public class Foo {
private int a;
public void mutateOtherInstance(Foo otherFoo) {
otherFoo.a = 1;
}
}
你可以争论这是否是理想的,但这只是JLS指定这是合法的生活规则。
答案 1 :(得分:4)
Main是你班级的一部分,你已经在课堂上宣布了:) 主要不是你的对象的一部分,它不是你从类创建的对象的任何部分,但它仍然是类的一部分。这对于任何静态函数都是正确的,因为main只是一个正常的静态函数,框架知道它应该在程序执行时查找。
/尤
答案 2 :(得分:2)
main
方法在类Ferrari
中,因此可以访问私有变量,即使它是静态的。
答案 3 :(得分:1)
好吧,main()
是包含类的一部分。实际上,main()
与其他所有方法完全相同,只是您可以启动JVM并告诉它从命令行运行类的main()
方法。
答案 4 :(得分:1)
只要私有变量与main()方法在同一个类中,main()方法就可以访问它。通常,即使是静态方法也可以访问同一类实例的私有字段。
答案 5 :(得分:1)
main方法的唯一特殊功能是用于告诉编译器程序执行应该从哪里开始。除此之外,它的行为与任何其他类方法一样,并且可以像任何其他类方法一样访问私有变量。
答案 6 :(得分:-2)
因为main是静态的,并且您的类尚未实例化。
例如,你没有法拉利对象可以访问。你必须创建一个法拉利对象然后访问它的成员。 static main是一个特殊的静态函数。如果你愿意,你可以把它想象成一个单独的。因此,如果你将主要方法移到法拉利之外,你会希望你必须创建一个法拉利实例来使用它...同样的交易在这里。