首先須要理解修飾符的可訪問性,如圖
安全
如下就是須要遵照的規則模塊化
1:儘量地使每一個類或成員不被外界訪問。換句話說,應該使用與你正在編寫的軟件的對應功能相一致、儘量最小的訪問級別。測試
2:對於頂層的(非嵌套的)類和接口,只有兩種可能非訪問級別,要從是包級私有的也就是default,要麼是public的.包級私有就意味着它是這個包實現的一部分,不會做爲該包API被導出,這樣在之後的髮型版本中,對它修改、替換、刪除就不用擔憂會影響先有客戶端的程序。spa
3:若是一個包級私有的頂層類(或者接口)只是在某一個類內部被用到,就應該把它變成惟一使用它的那個類的私有嵌套類。線程
4:下降沒必要要公有類的可訪問性,比下降包級私有的頂層類更重要的多,由於共有類是API的一部分,而包級私有的頂層類已是包實現的一部分了。設計
5:受保護(protected)的類或成員是導出API的一部分,必須永遠獲得支持,應該避免儘可能少用。orm
6:若是子類覆蓋了超類的一個方法,子類中的訪問級別就不容許低於超類中的訪問級別,不然會編譯錯誤。實現了接口的全部方法也必須是共有的,由於接口中的全部方法都是隱含着共有訪問級別。接口
7:爲了便於測試,不該該把其訪問級別成爲共有的,取而代之是把測試類成爲包的一部分,從而可以訪問它的包級私有元素。io
8:實例域決不能是共有的,包含公有可變域的類即使是final的也不是線程安全的,編譯