深刻淺析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有所贊助。