1. 程式人生 > >[JAVA][從0開始的JAVA隨筆]靜態(static)屬性的使用方法及註意事項

[JAVA][從0開始的JAVA隨筆]靜態(static)屬性的使用方法及註意事項

所有 輸出 str out test post java 無法 set

除了內部類之外,類一般不能具有靜態屬性。

如下定義了一個外部類Static_test和一個內部靜態類Static_class:

class Static_test{
    
    Static_test(){
        s_int = 1;
    }
    
    public static int s_int;
    
    public static void s_func(){
        System.out.println("s_int = "+s_int);
    }
}

public class Hello{
    
    Hello(){

    }
    
    
public void seta(int num){ a = num; } public void setb(int num){ b = num; } public void showa(){ System.out.println("a = "+a); } public void showb(){ System.out.println("b = "+b); } public static int a; public int b;
static class Static_class{ Static_class(){ s_int = 2; } public static int s_int; public static void s_func(){ System.out.println("s_int = "+s_int); } } public static void main(String[] args){ Hello h1
= new Hello(); Hello h2 = new Hello(); System.out.println("h1:"); h1.showa(); h1.seta(4); h1.setb(2); h1.showb(); System.out.println("h2:"); h2.showa(); h2.setb(3); h2.showb(); System.out.println("h:"); System.out.println("a = "+Hello.a); Static_test st = new Static_test(); Static_class sc = new Static_class(); Static_test.s_func(); Static_class.s_func(); } }

輸出:

技術分享圖片

調用外部類及內部類的靜態成員時,只能使用 [類名.成員名] 或 [成員名] 的方式調用,無法使用對象來調用靜態成員。

靜態成員歸類所有,所有實例對象調用的靜態成員都指向類本身的靜態成員,若靜態成員被修改,則所有對象調用時得到的都是修改之後的靜態成員。

[JAVA][從0開始的JAVA隨筆]靜態(static)屬性的使用方法及註意事項