首頁  >  文章  >  Java  >  Java中的Static class的程式碼實例詳解

Java中的Static class的程式碼實例詳解

黄舟
黄舟原創
2017-03-16 10:38:151145瀏覽

這篇文章主要介紹了Java中的Static class詳解及實例程式碼的相關資料,在Java中我們可以有靜態實例變數、靜態方法、靜態區塊。類別也可以是靜態的,需要的朋友可以參考下

 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的程式碼實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn