亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

java 內部類如何訪問成員

小樊
81
2024-11-15 09:41:55
欄目: 編程語言

在 Java 中,內部類(Inner Class)可以訪問其外部類的所有成員,包括私有成員。內部類分為四種類型:成員內部類、局部內部類、匿名內部類和靜態內部類。下面是各種內部類訪問成員的方式:

  1. 成員內部類(Member Inner Class): 成員內部類是定義在外部類內部的普通類。它可以訪問外部類的所有成員,包括私有成員。訪問方式與外部類的成員相同。
public class OuterClass {
    private int outerData = 10;

    class InnerClass {
        void display() {
            System.out.println("outerData: " + outerData);
        }
    }

    public static void main(String[] args) {
        OuterClass outer = new OuterClass();
        OuterClass.InnerClass inner = outer.new InnerClass();
        inner.display(); // 輸出:outerData: 10
    }
}
  1. 局部內部類(Local Inner Class): 局部內部類是定義在方法內部或代碼塊內部的類。它只能訪問所在方法或代碼塊中的 final 或 effectively final 的局部變量。
public class OuterClass {
    public void createLocalInnerClass() {
        final int localData = 20;

        class LocalInnerClass {
            void display() {
                System.out.println("localData: " + localData);
            }
        }

        LocalInnerClass localInner = new LocalInnerClass();
        localInner.display(); // 輸出:localData: 20
    }

    public static void main(String[] args) {
        OuterClass outer = new OuterClass();
        outer.createLocalInnerClass();
    }
}
  1. 匿名內部類(Anonymous Inner Class): 匿名內部類是沒有名字的內部類,通常用于創建一次性使用的對象。它可以訪問所在方法或代碼塊中的 final 或 effectively final 的局部變量。
public class OuterClass {
    public void createAnonymousInnerClass() {
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                System.out.println("Anonymous inner class running.");
            }
        };

        new Thread(runnable).start(); // 輸出:Anonymous inner class running.
    }

    public static void main(String[] args) {
        OuterClass outer = new OuterClass();
        outer.createAnonymousInnerClass();
    }
}
  1. 靜態內部類(Static Inner Class): 靜態內部類是使用 static 關鍵字定義的內部類。它可以訪問外部類的所有靜態成員,但不能直接訪問外部類的非靜態成員。如果需要訪問非靜態成員,需要通過外部類的實例。
public class OuterClass {
    private static int outerStaticData = 100;
    private int outerData = 200;

    static class StaticInnerClass {
        void displayOuterStaticData() {
            System.out.println("outerStaticData: " + outerStaticData);
        }

        void displayOuterData(OuterClass outer) {
            System.out.println("outerData: " + outer.outerData);
        }
    }

    public static void main(String[] args) {
        OuterClass outer = new OuterClass();
        OuterClass.StaticInnerClass staticInner = new OuterClass.StaticInnerClass();
        staticInner.displayOuterStaticData(); // 輸出:outerStaticData: 100
        staticInner.displayOuterData(outer); // 輸出:outerData: 200
    }
}

0
和平县| 且末县| 合川市| 申扎县| 合水县| 页游| 城口县| 宿迁市| 文安县| 江津市| 舟曲县| 长春市| 京山县| 澄城县| 新疆| 招远市| 延长县| 曲沃县| 顺昌县| 确山县| 咸丰县| 岱山县| 广昌县| 天门市| 鹰潭市| 长海县| 景泰县| 旬阳县| 珠海市| 青冈县| 区。| 兴安县| 荣成市| 青神县| 桓台县| 福泉市| 凤庆县| 元阳县| 华池县| 高尔夫| 大余县|