閱讀445 返回首頁    go 阿裏雲 go 技術社區[雲棲]


static——直屬單位

          在師哥師姐給我們傳授考試係統的經驗過程中,提到了Staic,而我對於static也是從未注意,但是從那天學姐給我們講了static後,我發現這個單詞真的很需要深刻的了解一下,下麵我來說說我知道的Static。

         使用特點

             1、static意思是靜態,可以修飾類、字段、屬性、方法,標記為static的就不用創建實例對象調用了,可以通過類名直接點出來。例如:    

public class myClass
{
   public static void HelloWorld() { .... }

}
                          另一個類可以直接調用:

myClass.HelloWorld();
              2、static與非static最大的區別就是static類型的變量及方法在調用的時候就在內存中分配了地址,且這個地址隻有一份,故static可以直接訪問。而非static必需手工去實例化該類,以對象的方式去訪問變量和方法。例如:

class City() 
{ 
    //4個直轄市static 靜態全局類型 
    public static void Beijing(){} 
    public static  void ShangHai(){} 
    public static  void Tianjin(){} 
    public static  void Chongqing(){} 
    //其他城市 非靜態 
    public void Guangzhou(){} 
    public void Nanjing(){}  
} 
void Main() 
{ 
    //調用static類型的方法 
    City.Beijing();//調用北京 
    City.Shanghai();//調用上海 
 
    //調用非static類型的方法 
    //沒有直接調用權利,必須先實例化 
    City chengShi=new City(); 
    chengShi.Guangzhou();//調用廣州 
} 
                   3、不能包含實例構造函數,可以聲明靜態構造函數分配初始值或設置某個靜態狀態。應為所謂構造函數是與new放在一起用的,而靜態類是不需要new的,也就是不需要實例化就可以直接被調用的。

                   4、static方法可以繼承,但static類不可以被繼承,因為如果static類要繼承的話,則該類中需要有實例構造函數,但上麵已經說了不能包含實例構造函數。

用法:

1、用於變量前,表示每次重新使用該變量所在方法、類或自定義類時,變量的值為程序這次運行最後一次為變量賦值時的值,這個方法稱為靜態函數                    

private void Add()
{
static int number=1;
number++;
}
                       方法第一次調用後number=2;第二次調用後為3;

            2、在方法(函數)前用static修飾,表示此方法為所在類或所在自定義類所有,而不是這個類的實例所有,這個方法稱為靜態方法:例子如上麵提到的調用城市。

             3、用於class前,說明此類型無法新建實例,簡單點說這個類型的方法全是靜態方法,這個類裏的非靜態方法是不能使用的,這個類型稱為靜態類

static class dog
{
~~~~
}
~~~~
class d
{
~~~~
void f(....)
{
~~~~
dog ww= new dog();//此時程序會出現錯誤
}
}
             這是我對static的一些理解,希望和大家交流。

最後更新:2017-04-03 12:55:35

  上一篇:go linux文件係統(三)——進程與VFS的關係
  下一篇:go android跨進程通信(IPC):使用AIDL