這篇文章主要介紹了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中文網其他相關文章!