使類和成員的可訪問性最小化
阿新 • • 發佈:2017-10-17
線程 protect 父類 最小化 數組 受保護 強制 可變對象 bsp
信息隱藏的概念:模塊之間只通過API交互,互相不知道內部工作狀況
JAVA提供用於信息隱藏的機制:訪問控制
第一規則:盡可能使每個類或類成員不被外界訪問
四種可能的訪問級別:
1. 私有的 private
2. 包級私有的(缺省)
3. 受保護的 protected
4. 公有的 public
對訪問控制的限制:子類的訪問權限不能小於父類
實例域決不能是公有的,因為:
* 如果域是非final的或者是可變對象的final引用,一旦公有化相當於:
1. 放棄了強制這個實例域不可變的能力
2. 這個類不是線程安全的
* 即使這個域是final的,並且引用的是不可變對象,那麽也放棄了切換到一個新的內部數據表示表示法的靈活性(比如修改這個內部數據的名字)
例外:常量,可以用公有的靜態final域表示。這種域的名稱由大寫字母組成,並以下劃線分割每個字母;更重要的是,這種域要麽包含基本類型,要麽包含指向不可變的對象的引用
長度不為零的數組總是可變的,所以公有靜態數組域或者返回這種域的訪問方法幾乎總是錯誤的。
總結:除了公有的靜態final域之外,公有類都不應該包含公有域。並且保證公有的靜態final域所引用的對象都是不可變的。
使類和成員的可訪問性最小化