在 Java 中,內(nèi)部類(Inner Class)可以訪問其外部類的所有成員,包括私有成員。但是,如果內(nèi)部類需要訪問外部類的私有成員,那么這些成員對(duì)于其他類來說是不可見的。Java 內(nèi)部類處理訪問權(quán)限的方式如下:
默認(rèn)訪問權(quán)限(默認(rèn)無修飾符):如果內(nèi)部類與外部類在同一個(gè)文件中定義,那么內(nèi)部類的默認(rèn)訪問權(quán)限為包私有(package-private),即只有同一個(gè)包中的類可以訪問它。如果內(nèi)部類與外部類在不同的文件中定義,那么默認(rèn)訪問權(quán)限為私有(private),即只有外部類可以訪問它。
公共訪問權(quán)限(public):如果需要讓其他類訪問內(nèi)部類的成員,可以將內(nèi)部類定義為公共(public)的。這樣,任何類都可以訪問這個(gè)內(nèi)部類的成員。
受保護(hù)訪問權(quán)限(protected):受保護(hù)(protected)訪問權(quán)限允許內(nèi)部類訪問外部類的成員,以及其他包中的子類。這種訪問權(quán)限適用于需要在不同包中共享的成員。
私有訪問權(quán)限(private):將內(nèi)部類定義為私有(private)的,意味著只有外部類可以訪問它。這種情況下,內(nèi)部類通常用于實(shí)現(xiàn)與外部類相關(guān)的功能,但不需要被其他類訪問。
下面是一個(gè)簡(jiǎn)單的示例,展示了如何定義和使用內(nèi)部類:
public class OuterClass {
private int privateMember = 10; // 私有成員
public class InnerClass {
public void accessOuterMembers() {
System.out.println("Private member: " + privateMember); // 訪問外部類的私有成員
}
}
public static void main(String[] args) {
OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.new InnerClass();
inner.accessOuterMembers(); // 輸出:Private member: 10
}
}
在這個(gè)示例中,OuterClass
的內(nèi)部類 InnerClass
可以訪問外部類的私有成員 privateMember
。當(dāng)我們創(chuàng)建一個(gè) OuterClass
的實(shí)例并調(diào)用 accessOuterMembers()
方法時(shí),它將輸出私有成員的值。