- 定義方式不同:
- 內部類:內部類是一個類的成員,它定義在另一個類的內部,并且可以訪問外部類的成員變量和方法。
- 靜態內部類:靜態內部類是一個靜態的內部類,它定義在另一個類的內部,但是與外部類的實例無關,可以直接通過外部類來訪問。
- 訪問方式不同:
- 內部類:內部類可以訪問外部類的成員變量和方法,包括私有成員。
- 靜態內部類:靜態內部類不能直接訪問外部類的非靜態成員,只能訪問外部類的靜態成員。
- 生命周期不同:
- 內部類:內部類的生命周期與外部類對象的生命周期相關聯,只有通過外部類對象來創建內部類的實例。
- 靜態內部類:靜態內部類與外部類對象無關,可以直接通過類名來創建靜態內部類的實例。
- 內存占用不同:
- 內部類:每個內部類的對象都會持有一個外部類對象的引用,可能會增加內存消耗。
- 靜態內部類:靜態內部類不持有外部類對象的引用,不會增加內存消耗。
總的來說,靜態內部類更加獨立和靈活,而內部類更加緊密地與外部類相關聯。選擇使用內部類還是靜態內部類取決于具體的需求和設計。