Java 中的靜態嵌套類和非靜態嵌套類html
<blockquote><b>術語:</b>嵌套類分爲兩類:靜態嵌套類和非靜態嵌套類.聲明 static 的嵌套類稱爲靜態嵌套類,非靜態嵌套類也稱爲內部類.</blockquote>java
class OuterClass { private static String msg = "GeeksForGeeks"; public static class NestedStaticClass { public void printMessage() { 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); } } } public 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(); } }
<span class="badge badge-pill badge-primary" data-toggle="collapse" data-target="#Main">運行結果</span>oracle
<div class="collapse" id="Main"> ``` Message from nested static class: GeeksForGeeks Message from non-static nested class: GeeksForGeeks Message from non-static nested class: GeeksForGeeks ``` </div>this
public class ShadowTest { public int x = 0; class FirstLevel { public int x = 1; void methodInFirstLevel(int x) { System.out.println("x = " + x); System.out.println("this.x = " + this.x); System.out.println("ShadowTest.this.x = " + ShadowTest.this.x); } } public static void main(String... args) { ShadowTest st = new ShadowTest(); ShadowTest.FirstLevel fl = st.new FirstLevel(); fl.methodInFirstLevel(23); } }
<span class="badge badge-pill badge-primary" data-toggle="collapse" data-target="#ShadowTest">運行結果</span>spa
<div class="collapse" id="ShadowTest"> ``` x = 23 this.x = 1 ShadowTest.this.x = 0 ``` </div>code
參考資料htm