溫馨提示×

Java 內(nèi)部類咋定義

小樊
82
2024-10-24 09:10:05
欄目: 編程語言

在 Java 中,內(nèi)部類(Inner Class)是定義在另一個類的內(nèi)部的類。根據(jù)內(nèi)部類與外部類的關(guān)系,可以分為四種類型:成員內(nèi)部類、局部內(nèi)部類、匿名內(nèi)部類和靜態(tài)內(nèi)部類。下面分別介紹這四種類型的定義方法。

  1. 成員內(nèi)部類(Member Inner Class): 成員內(nèi)部類是定義在外部類的成員位置上的類,它可以訪問外部類的所有成員(包括私有成員)。成員內(nèi)部類的定義與普通類相同,只是在類名前面加上外部類的類名即可。例如:
public class OuterClass {
    private int outerData = 0;

    public class InnerClass {
        public void accessOuterData() {
            System.out.println("outerData = " + outerData);
        }
    }
}
  1. 局部內(nèi)部類(Local Inner Class): 局部內(nèi)部類是定義在方法或代碼塊中的類。局部內(nèi)部類只能訪問所在方法或代碼塊中的final變量(包括實際上被聲明為final的變量,以及實際上沒有被修改其值的變量)。局部內(nèi)部類的定義與普通類相同,只是在類名前面加上外部類的類名即可。例如:
public class OuterClass {
    public void createLocalInnerClass() {
        final int localData = 0;

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

        LocalInnerClass localInner = new LocalInnerClass();
        localInner.accessLocalData();
    }
}
  1. 匿名內(nèi)部類(Anonymous Inner Class): 匿名內(nèi)部類是沒有名字的內(nèi)部類,通常用于創(chuàng)建一次性使用的對象,例如實現(xiàn)接口或繼承其他類。匿名內(nèi)部類的定義與普通類相似,只是在類名位置使用關(guān)鍵字 new,并緊接著給出類的構(gòu)造函數(shù)和實現(xiàn)代碼。例如:
public class OuterClass {
    public void createAnonymousInnerClass() {
        new Object() {
            public void printMessage() {
                System.out.println("This is an anonymous inner class.");
            }
        }.printMessage();
    }
}
  1. 靜態(tài)內(nèi)部類(Static Inner Class): 靜態(tài)內(nèi)部類是定義在外部類的靜態(tài)成員位置上的類。靜態(tài)內(nèi)部類不能訪問外部類的非靜態(tài)成員,但可以通過外部類實例訪問靜態(tài)成員。靜態(tài)內(nèi)部類的定義與普通類相同,只是在類名前面加上 static 關(guān)鍵字。例如:
public class OuterClass {
    private static int outerStaticData = 0;

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

0