熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

Java 封裝之static關鍵字

2013-11-23 18:49:58  來源: Java核心技術 

  逐步深入的學習都會發現主函數的修飾符中的static關鍵字亦或是在定義一個函數的時候有main函數直接訪問也會定義成static void method()如下面的程序片段:


    class Test  
    { 
        static void method(){ 
            Systemoutprintln( Function method() ); 
        } 
     
        public static void main(String[] args)  
        { 
            method(); 
            //實際是: thod(); 
        } 
    } 
    /*輸出結果是: 
     Function method() 
    */ 

  static關鍵字用來修飾成員(成員變量和成員函數)也成為類成員未被static修飾的又稱為對象成員

  被修飾後的成員具備以下特點:

  <>隨著類的加載而加載隨著類的消失而消亡

  <>優先於對象存在

  <>被所有對象所共享凡是類的實例對象均可以調用靜態成員

  <>可以直接被類名調用格式是: 類名靜態成員(變量或者方法)類名也可以省略

  注意事項

  <>靜態方法只能訪問靜態成員(變量和方法)

  <>非靜態方法可以訪問靜態成員(變量和方法)也可以訪問非靜態成員

  <>靜態方法中不可以寫thissuper關鍵字

  (thissuper是和對象引用相關的關鍵字是在對象被創建後才能夠用來訪問而static成員則是優先於對象存在的)

  <>主函數main是靜態的

  <>靜態代碼塊:

  格式static{要執行的內容}

  隨著類的加載而加載並且執行一次且優先於主函數執行用於給類進行初始化

   

  static出現的時機

  <>對象訪問成員的時候出現大量的共同數據時候該變量可以定義為靜態的

  <>若一個方法內部沒有靜態數據(即是對象持有的數據)該方法可以定義為靜態的

  static 關鍵字在實際項目的應用非常廣泛

  下面的這個例子來說明以上特點注意事項: 請仔細閱讀下面的代碼 


     class Test{ 
            
          int age; //普通成員 
     
          static String attribute = 奇女子; //靜態成員 
     
           Test(){ 
           } 
           //靜態塊 
           static { 
               Systemoutprintln(世間的奇女子們); 
           } 
     
          
           public static void FengJie(String n){ 
              
             Systemoutprintln(n +  是一個  + attribute); 
     
             //Systemoutprintln(QiNvZis age is : + age); 
             //無法從靜態上下文中引用非靜態變量age 
     
             // method(); 
             //無法從靜態上下文中引用非靜態方法  
           } 
     
     
           public void method(){ 
               Systemoutprintln(想要成為奇女子); 
           } 
     
     
           public void toBeQiNvZi(String n){ 
              FengJie(n); 
              Systemoutprintln(n + 的年齡是: + thisage); 
              method(); 
               
           } 
     
           
     
          public static void main(String[] args){ 
     
            Systemoutprintln(); 
            Systemoutprintln(你是世間的 + Testattribute); 
            Systemoutprintln(你是世間的 + attribute); 
            /*可以從以下兩點解釋 
             main是靜態的不能引用非靜態成員 
             age是普通成員變量只能用對象來訪問 
            Systemoutprintln(QINvZI: + Testage); 
            Systemoutprintln(QINvZI: + age); 
            */ 
            Systemoutprintln(); 
            FengJie(鳳姐); 
            TestFengJie(鳳姐); 
     
            Systemoutprintln(); 
            Test t = new Test(); 
            tage = 
            ttoBeQiNvZi(芙蓉); 
            tFengJie(鳳姐); 
     
     
            
          } 
     } 
    /*輸出結果 
     
    世間的奇女子們 
     
    你是世間的奇女子 
    你是世間的奇女子 
     
    鳳姐 是一個 奇女子 
    鳳姐 是一個 奇女子 
     
    芙蓉 是一個 奇女子 
    芙蓉的年齡是: 
    想要成為奇女子 
    鳳姐 是一個 奇女子 
    */ 
From:http://tw.wingwit.com/Article/program/Java/hx/201311/25820.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.