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