在 Java 中,內部類是定義在另一個類的內部的類。內部類可以訪問其外部類的所有成員(包括私有成員),這使得它們之間可以緊密地協(xié)作。以下是內部類訪問外部類成員的一些方式:
訪問外部類的私有成員:
private
修飾符的成員變量,并在內部類中使用它來實現(xiàn)的。class OuterClass {
private int privateVar = 10;
class InnerClass {
void accessPrivateVar() {
System.out.println("Accessing private variable: " + privateVar);
}
}
}
訪問外部類的受保護成員:
protected
)。這意味著如果外部類是另一個包的一部分,或者子類,那么內部類也可以訪問這些成員。class OuterClass {
protected int protectedVar = 20;
class InnerClass {
void accessProtectedVar() {
System.out.println("Accessing protected variable: " + protectedVar);
}
}
}
訪問外部類的默認(包-private)成員:
public
或 private
修飾符)成員。但是,如果外部類和內部類位于不同的包中,那么內部類只能訪問那些被聲明為 default
(即沒有顯式修飾符)的成員。class OuterClass {
int defaultVar = 30;
class InnerClass {
void accessDefaultVar() {
System.out.println("Accessing default variable: " + defaultVar);
}
}
}
通過外部類的實例訪問成員:
class OuterClass {
int memberVar = 40;
int getMemberVar() {
return memberVar;
}
class InnerClass {
void accessMemberVar() {
int var = getMemberVar();
System.out.println("Accessing member variable: " + var);
}
}
}
使用 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)的)的影響。