最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中的Static class詳解及實例代碼

 更新時間:2017年03月15日 14:14:03   投稿:lqh  
這篇文章主要介紹了 Java中的Static class詳解及實例代碼的相關(guān)資料,在Java中我們可以有靜態(tài)實例變量、靜態(tài)方法、靜態(tài)塊。類也可以是靜態(tài)的,需要的朋友可以參考下

 Java中的Static class詳解

Java中的類可以是static嗎?答案是可以。在Java中我們可以有靜態(tài)實例變量、靜態(tài)方法、靜態(tài)塊。類也可以是靜態(tài)的。

     java允許我們在一個類里面定義靜態(tài)類。比如內(nèi)部類(nested class)。把nested class封閉起來的類叫外部類。在java中,我們不能用static修飾頂級類(top level class)。只有內(nèi)部類可以為static。

     靜態(tài)內(nèi)部類和非靜態(tài)內(nèi)部類之間到底有什么不同呢?下面是兩者間主要的不同。

    (1)內(nèi)部靜態(tài)類不需要有指向外部類的引用。但非靜態(tài)內(nèi)部類需要持有對外部類的引用。

    (2)非靜態(tài)內(nèi)部類能夠訪問外部類的靜態(tài)和非靜態(tài)成員。靜態(tài)類不能訪問外部類的非靜態(tài)成員。他只能訪問外部類的靜態(tài)成員。

    (3)一個非靜態(tài)內(nèi)部類不能脫離外部類實體被創(chuàng)建,一個非靜態(tài)內(nèi)部類可以訪問外部類的數(shù)據(jù)和方法,因為他就在外部類里面。

基于上面的討論,我們可以通過這些特性讓編程更簡單、有效。

/* 下面程序演示如何在java中創(chuàng)建靜態(tài)內(nèi)部類和非靜態(tài)內(nèi)部類 */
class OuterClass{
  private static String msg = "GeeksForGeeks";

  // 靜態(tài)內(nèi)部類
  public static class NestedStaticClass{

    // 靜態(tài)內(nèi)部類只能訪問外部類的靜態(tài)成員
    public void printMessage() {

     // 試著將msg改成非靜態(tài)的,這將導致編譯錯誤 
     System.out.println("Message from nested static class: " + msg); 
    }
  }

  // 非靜態(tài)內(nèi)部類
  public class InnerClass{

    // 不管是靜態(tài)方法還是非靜態(tài)方法都可以在非靜態(tài)內(nèi)部類中訪問
    public void display(){
     System.out.println("Message from non-static nested class: "+ msg);
    }
  }
} 

class Main
{
  // 怎么創(chuàng)建靜態(tài)內(nèi)部類和非靜態(tài)內(nèi)部類的實例
  public static void main(String args[]){

    // 創(chuàng)建靜態(tài)內(nèi)部類的實例
    OuterClass.NestedStaticClass printer = new OuterClass.NestedStaticClass();

    // 創(chuàng)建靜態(tài)內(nèi)部類的非靜態(tài)方法
    printer.printMessage();  

    // 為了創(chuàng)建非靜態(tài)內(nèi)部類,我們需要外部類的實例
    OuterClass outer = new OuterClass();    
    OuterClass.InnerClass inner = outer.new InnerClass();

    // 調(diào)用非靜態(tài)內(nèi)部類的非靜態(tài)方法
    inner.display();

    // 我們也可以結(jié)合以上步驟,一步創(chuàng)建的內(nèi)部類實例
    OuterClass.InnerClass innerObject = new OuterClass().new InnerClass();

    // 同樣我們現(xiàn)在可以調(diào)用內(nèi)部類方法
    innerObject.display();
  }
}

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

最新評論

柳林县| 凤山县| 云林县| 行唐县| 板桥市| 通化县| 天峻县| 鞍山市| 桦川县| 通城县| 阳朔县| 东乡县| 时尚| 开鲁县| 焉耆| 杨浦区| 明水县| 泰州市| 金门县| 遵化市| 缙云县| 眉山市| 武夷山市| 明光市| 西藏| 南安市| 福建省| 台东市| 宜兴市| 岑巩县| 泰来县| 博湖县| 拜泉县| 博爱县| 会同县| 荆门市| 石门县| 景宁| 新乡县| 康保县| 无极县|