繁体   English   中英

如何在main()中访问私有静态实例变量

[英]how private static instance variable is accessed in main()

public class test
{
    private static int a;
    public static void main(string[] args)
    {
        modify(a);
        system.out.print(a);
    }
    public static void modify(int a)
    {
        a++;
    }
}

我想知道如何在main()方法中直接访问私有静态变量。 尽管可以直接从静态方法访问静态变量,但是该变量是私有的,方法是main()。

是的,它是静态的,但是由于它与main方法位于同一类中,因此可以由该类中的静态方法(包括main)来访问...实际上,也可以由同一类中的普通方法进行访问

modif()可以访问属性a并不困扰您 然后,与main()完全相同。

main()唯一的特别之处是,此方法用作应用程序的入口点。 这种特殊性不会干扰main()是静态的。


顺便说一句,你的modif()方法并没有真正访问静态a ,因为它是由参数阴影场a

另一件事, a++不会做任何事情,因为您只是在方法内部修改参数a的值。 int是一个原始的,是按值传递的,所以你的代码不会改变的价值a方法范围之外。

我想您想要这样的东西:

public class test{
    private static int a;
    public static void main(string[] args){
        modify(); //<--- No parameters needed here !
        system.out.print(a);
    }

    public static void modify(){ //<--- No parameters needed here !
        a++;
    }
}

如果将成员变量声明为私有,则意味着只能从同一类中的方法访问它。 您的main()方法实际上是同一类中的静态方法,因此它可以访问任何私有变量。

由于main在同一类中,因此您可以访问私有变量。

私有成员变量对于该类的任何方法(静态或非静态)均可见。 静态方法可以执行哪些操作有一些限制,但是这些限制与可见性规则是分开的。

但是公共类测试{private int a; 公共静态无效main(string [] args){system.out.print(a); }

}

您不能直接在main()中访问实例变量'a'...它将显示错误bcoz,它是私有的……但是如何访问私有的静态变量...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM