Java中的嵌套類(Nested Class)是指一個類定義在另一個類內部的類。與之相對的概念是頂級類(Top-level Class),它是指所有未定義在其他類中的類。
嵌套類有兩種類型:靜態嵌套類和內部類。
靜態嵌套類
靜態嵌套類是使用static關鍵字修飾的嵌套類,它可以像普通類一樣使用。
public class Outer {
private static int x = 10;
private int y = 20;
public static class StaticNested {
public void print() {
System.out.println(x);
}
}
}
在上面的例子中,靜態嵌套類StaticNested是Outer的一個嵌套類,它與Outer是平級的。使用它時,需要使用Outer.StaticNested來訪問。
Outer.StaticNested nested = new Outer.StaticNested();
nested.print();
內部類
內部類是沒有使用static關鍵字修飾的嵌套類,它可以引用它所在外部類的成員變量和方法,甚至可以訪問private的變量和方法。
public class Outer {
private int x = 10;
class Inner {
public void print() {
System.out.println(x);
}
}
}
在上面的例子中,內部類Inner可以直接使用Outer的成員變量x,不需要通過實例化Outer來訪問。使用它時,需要先實例化Outer對象,再通過Outer對象來創建Inner對象。
Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();
inner.print();
通過內部類,我們可以實現一些特殊的功能,比如把代碼塊封裝到內部類中,使得外部類的代碼更加簡潔。
總之,Java中的嵌套類和內部類為我們提供了更加靈活的類的定義方式,使得我們能夠更好地封裝和組織代碼。