程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 深刻淺析Java中Static Class及靜態外部類和非靜態外部類的分歧

深刻淺析Java中Static Class及靜態外部類和非靜態外部類的分歧

編輯:關於JAVA

深刻淺析Java中Static Class及靜態外部類和非靜態外部類的分歧。本站提示廣大學習愛好者:(深刻淺析Java中Static Class及靜態外部類和非靜態外部類的分歧)文章只能為提供參考,不一定能成為您想要的結果。以下是深刻淺析Java中Static Class及靜態外部類和非靜態外部類的分歧正文


java中的類可所以static嗎?謎底是可以。在java中我們可以有靜態實例變量、靜態辦法、靜態塊。類也能夠是靜態的。

java許可我們在一個類外面界說靜態類。好比外部類(nested class)。把nested class關閉起來的類叫內部類。在java中,我們不克不及用static潤飾頂級類(top level class)。只要外部類可認為static。

     靜態外部類和非靜態外部類之間究竟有甚麼分歧呢?上面是二者間重要的分歧。

    (1)外部靜態類不須要有指向內部類的援用。但非靜態外部類須要持有對內部類的援用。

    (2)非靜態外部類可以或許拜訪內部類的靜態和非靜態成員。靜態類不克不及拜訪內部類的非靜態成員。他只能拜訪內部類的靜態成員。

    (3)一個非靜態外部類不克不及離開內部類實體被創立,一個非靜態外部類可以拜訪內部類的數據和辦法,由於他就在內部類外面。

基於下面的評論辯論,我們可以經由過程這些特征讓編程更簡略、有用。

/* 上面法式演示若何在java中創立靜態外部類和非靜態外部類 */
class OuterClass{
  private static String msg = "GeeksForGeeks";
  // 靜態外部類
  public static class NestedStaticClass{
    // 靜態外部類只能拜訪內部類的靜態成員
    public void printMessage() {
     // 試著將msg改成非靜態的,這將招致編譯毛病 
     System.out.println("Message from nested static class: " + msg); 
    }
  }
  // 非靜態外部類
  public class InnerClass{
    // 不論是靜態辦法照樣非靜態辦法都可以在非靜態外部類中拜訪
    public void display(){
     System.out.println("Message from non-static nested class: "+ msg);
    }
  }
} 
class Main
{
  // 怎樣創立靜態外部類和非靜態外部類的實例
  public static void main(String args[]){
    // 創立靜態外部類的實例
    OuterClass.NestedStaticClass printer = new OuterClass.NestedStaticClass();
    // 創立靜態外部類的非靜態辦法
    printer.printMessage();  
    // 為了創立非靜態外部類,我們須要內部類的實例
    OuterClass outer = new OuterClass();    
    OuterClass.InnerClass inner = outer.new InnerClass();
    // 挪用非靜態外部類的非靜態辦法
    inner.display();
    // 我們也能夠聯合以上步調,一步創立的外部類實例
    OuterClass.InnerClass innerObject = new OuterClass().new InnerClass();
    // 異樣我們如今可以挪用外部類辦法
    innerObject.display();
  }
}

以上內容是小編給年夜家引見Java中Static Class的相干材料,願望對年夜家進修java中的static class有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved