溫馨提示×

java 內(nèi)部類如何定義

小樊
81
2024-11-15 09:35:52
欄目: 編程語言

在Java中,內(nèi)部類(Inner Class)是定義在另一個類(外部類)內(nèi)部的類。內(nèi)部類可以訪問外部類的所有成員(包括私有成員),并且可以有不同的訪問級別(如public、protected、默認和private)。內(nèi)部類可以分為四種類型:成員內(nèi)部類、局部內(nèi)部類、匿名內(nèi)部類和靜態(tài)內(nèi)部類。

  1. 成員內(nèi)部類(Member Inner Class):定義在外部類的內(nèi)部,但不屬于外部類的成員,不能使用static修飾符。成員內(nèi)部類可以訪問外部類的所有成員。
public class OuterClass {
    private int outerData = 10;

    class InnerClass {
        public void accessOuterMembers() {
            System.out.println("outerData: " + outerData);
        }
    }
}
  1. 局部內(nèi)部類(Local Inner Class):定義在外部類的方法或代碼塊內(nèi)部,只能訪問所在方法或代碼塊中的final變量。
public class OuterClass {
    public void createLocalInnerClass() {
        final int localData = 20;

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

        LocalInnerClass localInner = new LocalInnerClass();
        localInner.accessLocalData();
    }
}
  1. 匿名內(nèi)部類(Anonymous Inner Class):沒有類名的內(nèi)部類,通常用于實現(xiàn)接口或繼承類的子類。匿名內(nèi)部類只能訪問所在方法或代碼塊中的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();
    }
}
  1. 靜態(tài)內(nèi)部類(Static Inner Class):使用static修飾符定義的內(nèi)部類,只能訪問外部類的靜態(tài)成員。靜態(tài)內(nèi)部類不能訪問外部類的非靜態(tài)成員。
public class OuterClass {
    private static int outerStaticData = 100;
    private int outerData = 200;

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

        public void accessOuterData() {
            // 無法訪問非靜態(tài)成員
            // System.out.println("outerData: " + outerData);
        }
    }
}

0