91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
始兴县| 且末县| 五指山市| 邢台市| 内江市| 新安县| 桓仁| 土默特右旗| 招远市| 黔西县| 奎屯市| 甘南县| 民权县| 桂林市| 自治县| 东乌| 仁布县| 台中县| 渝北区| 仁化县| 宣恩县| 德清县| 青冈县| 迁西县| 丹棱县| 博客| 广南县| 泰宁县| 平罗县| 石城县| 伊吾县| 神池县| 全州县| 万源市| 西吉县| 奉化市| 新邵县| 商南县| 乐东| 边坝县| 察隅县|