1. 程式人生 > 實用技巧 >025:為什麼需要將Logger物件宣告為private static final型別的

025:為什麼需要將Logger物件宣告為private static final型別的

  • 設定為private是為了防止其他類使用當前類的日誌物件;
  • 設定為static是為了讓每個類中的日誌物件只生成一份,日誌物件是屬於類的,不是屬於具體的例項的;
  • 設定成final是為了避免日誌物件在執行時被修改。

有時候我會使用protected而不是private,只有一種情況下我會這麼用:當我的設計中有繼承體系,並且我希望繼承體系裡的物件都使用同一個日誌物件時,就會在基類裡定義一個protected的日誌物件。

背景知識梳理

Java中的訪問修飾符

  • private(私有的):只有宣告該成員的類內部才可以訪問這個成員;
  • package-private(包級-私有的):宣告改成員的包內部的任何類都可以訪問這個成員。這個是預設的訪問級別。
  • protected(受保護的):宣告該成員的子類可以訪問這個成員,並且宣告改成員的包內部的任何類也可以訪問該成員;
  • public(公有的):在任何地方都可以訪問該成員

static關鍵詞

  • 修飾成員變數,這樣該成員變數就屬於類的成員變數,而不是該類的例項物件的的成員變數
  • 修飾方法,一般工具類的方法會使用public static修飾
  • 修飾程式碼塊,對於類中的static成員變數,一般會使用static修飾的程式碼塊進行初始化
  • 修飾import語句,在使用別的工具類的時候,如果使用static修飾import語句,就可以像使用本類的方法一樣去使用,不過有些同學也不想這麼用——擔心這麼用會隱藏掉類與類之間的設計關係。

final關鍵詞

final修飾符一般用於基本型別(primitive)域,或不可變(immutable)類物件。如果是修飾一個類物件,需要注意final只是讓指向這個類的引用不可變,但是如果這個類是可變的,那麼final其實並沒有達到預期的效果。例如private final Date exampleDate,這裡exampleDate在物件構造後就不能被改變了,但是exampleDate引用的物件還是可變的。



作者:javaadu
連結:https://www.jianshu.com/p/4018a249e83d
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。