Java 內部類
Java 內部類
在 Java 中,也可以巢狀類(類中包含類)。巢狀類的目的是將相關的類組合在一起,從而使您的程式碼更具可讀性和可維護性。
要訪問內部類,請建立外部類的物件,然後建立內部類的物件。
示例
class OuterClass {
int x = 10;
class InnerClass {
int y = 5;
}
}
public class Main {
public static void main(String[] args) {
OuterClass myOuter = new OuterClass();
OuterClass.InnerClass myInner = myOuter.new InnerClass();
System.out.println(myInner.y + myOuter.x);
}
}
// Outputs 15 (5 + 10)
私有內部類
與“常規”類不同,內部類可以是 private
或 protected
。如果您不希望外部物件訪問內部類,請將該類宣告為 private
示例
class OuterClass {
int x = 10;
private class InnerClass {
int y = 5;
}
}
public class Main {
public static void main(String[] args) {
OuterClass myOuter = new OuterClass();
OuterClass.InnerClass myInner = myOuter.new InnerClass();
System.out.println(myInner.y + myOuter.x);
}
}
如果您嘗試從外部類訪問私有內部類,則會發生錯誤
Main.java:13: 錯誤: OuterClass.InnerClass 在 OuterClass 中具有私有訪問許可權
OuterClass.InnerClass myInner = myOuter.new InnerClass();
^
靜態內部類
內部類也可以是 static
,這意味著您可以無需建立外部類物件即可訪問它
示例
class OuterClass {
int x = 10;
static class InnerClass {
int y = 5;
}
}
public class Main {
public static void main(String[] args) {
OuterClass.InnerClass myInner = new OuterClass.InnerClass();
System.out.println(myInner.y);
}
}
// Outputs 5
注意:就像 static
屬性和方法一樣,static
內部類無法訪問外部類的成員。
從內部類訪問外部類
內部類的一個優點是它們可以訪問外部類的屬性和方法
示例
class OuterClass {
int x = 10;
class InnerClass {
public int myInnerMethod() {
return x;
}
}
}
public class Main {
public static void main(String[] args) {
OuterClass myOuter = new OuterClass();
OuterClass.InnerClass myInner = myOuter.new InnerClass();
System.out.println(myInner.myInnerMethod());
}
}
// Outputs 10