Java中可以宣告一個類為Static嗎?

艾賀發表於2017-06-30

答案可以是Yes或No,取決於這個類的是最外層類還是內部類。
編譯器不允許最外層的類宣告為Static,但是可以宣告內部類為Static。

概念

巢狀類指被定義在另一個類的內部。巢狀類存在的目的應該只是為它的外圍類提供服務。如果巢狀類可能用於其他的某個環境中,那麼它應該是頂層類。
巢狀類有四種:除了第一種之外,其它三種都被稱為內部類。

  • 靜態成員類
  • 非靜態成員類
  • 匿名類
  • 區域性類

靜態內部類和普通內部類的特點:
1、靜態成員類最好把它看做是普通的類,只是碰巧的被宣告在另一個類的內部而已,它可以訪問例項化後的外圍類的所有成員,包括哪些宣告為私有的成員

2、靜態內部類,可以宣告普通成員變數和方法,而普通內部類不能宣告static成員變數和方法
3、靜態內部類,可以單獨初始化。普通內部類,必須先初始化外部類

靜態成員類一種常見用法是作為公有的輔助類,僅當與它的外部類一起使用時才有意義。

參考

[1] Joshua Bloch. Effective Java 2016年5月第二版 機械工業出版社. 優先考慮靜態成員類


相關文章