Java 中的静态嵌套类和非静态嵌套类

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

相关文章
相关标签/搜索