Java中的內部類是在一個類內部定義的類,可以分為靜態內部類和非靜態內部類。
靜態內部類指的是在一個類內部定義的靜態類。它可以獨立于外部類,并且不需要一個外部對象的引用來創建一個對象。當靜態內部類被實例化時,它的實例不會自動持有對外部類實例的引用。通過這種方式,靜態內部類可以在外部類被實例化之前被創建和使用。
public class OuterClass { public static class StaticInnerClass {} }
非靜態內部類指的是一個類內部定義的非靜態類。它需要一個外部對象的引用來創建一個實例,并且非靜態內部類實例持有對外部類實例的引用。通過這種方式,非靜態內部類可以訪問外部類的所有變量和方法。
public class OuterClass { public class InnerClass {} }
因此,靜態內部類和非靜態內部類之間的主要區別在于它們與外部類的關系以及它們的實例化方式。靜態內部類可以獨立于外部類創建一個實例,而非靜態內部類需要一個外部對象的引用。