簡體   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