溫馨提示×

Java 內部類如何訪問

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

在 Java 中,內部類是定義在另一個類的內部的類。內部類可以訪問其外部類的所有成員(包括私有成員),這使得它們之間可以緊密地協(xié)作。以下是內部類訪問外部類成員的一些方式:

  1. 訪問外部類的私有成員

    • 內部類可以直接訪問其外部類的私有成員。這是通過在外部類中定義一個 private 修飾符的成員變量,并在內部類中使用它來實現(xiàn)的。
    • 示例:
class OuterClass {
    private int privateVar = 10;

    class InnerClass {
        void accessPrivateVar() {
            System.out.println("Accessing private variable: " + privateVar);
        }
    }
}
  1. 訪問外部類的受保護成員

    • 內部類可以訪問其外部類的受保護成員(protected)。這意味著如果外部類是另一個包的一部分,或者子類,那么內部類也可以訪問這些成員。
    • 示例:
class OuterClass {
    protected int protectedVar = 20;

    class InnerClass {
        void accessProtectedVar() {
            System.out.println("Accessing protected variable: " + protectedVar);
        }
    }
}
  1. 訪問外部類的默認(包-private)成員

    • 內部類可以訪問其外部類的默認(沒有 publicprivate 修飾符)成員。但是,如果外部類和內部類位于不同的包中,那么內部類只能訪問那些被聲明為 default(即沒有顯式修飾符)的成員。
    • 示例:
class OuterClass {
    int defaultVar = 30;

    class InnerClass {
        void accessDefaultVar() {
            System.out.println("Accessing default variable: " + defaultVar);
        }
    }
}
  1. 通過外部類的實例訪問成員

    • 內部類可以通過其外部類的實例來訪問外部類的成員。這通常是通過在外部類中定義一個方法,該方法返回要訪問的成員,然后在內部類中調用該方法來實現(xiàn)的。
    • 示例:
class OuterClass {
    int memberVar = 40;

    int getMemberVar() {
        return memberVar;
    }

    class InnerClass {
        void accessMemberVar() {
            int var = getMemberVar();
            System.out.println("Accessing member variable: " + var);
        }
    }
}
  1. 使用 this 關鍵字

    • 在內部類中,可以使用 OuterClass.this 來引用外部類的實例。這通常用于在內部類的方法中調用外部類的另一個方法或訪問其成員變量。
    • 示例:
class OuterClass {
    int var = 50;

    class InnerClass {
        void printVar() {
            System.out.println("Outer class variable: " + OuterClass.this.var);
        }
    }
}

這些是內部類訪問外部類成員的主要方式。注意,內部類的訪問權限可能會受到其所在位置(即它是靜態(tài)的還是非靜態(tài)的)的影響。

0