1. 程式人生 > >使類和成員的可訪問性最小化

使類和成員的可訪問性最小化

線程 protect 父類 最小化 數組 受保護 強制 可變對象 bsp

信息隱藏的概念:模塊之間只通過API交互,互相不知道內部工作狀況

JAVA提供用於信息隱藏的機制:訪問控制

第一規則:盡可能使每個類或類成員不被外界訪問

四種可能的訪問級別:

  1. 私有的 private

  2. 包級私有的(缺省)

  3. 受保護的 protected

  4. 公有的 public

對訪問控制的限制:子類的訪問權限不能小於父類

實例域決不能是公有的,因為:

  * 如果域是非final的或者是可變對象的final引用,一旦公有化相當於:

    1. 放棄了強制這個實例域不可變的能力

    2. 這個類不是線程安全的

  * 即使這個域是final的,並且引用的是不可變對象,那麽也放棄了切換到一個新的內部數據表示表示法的靈活性(比如修改這個內部數據的名字)

例外:常量,可以用公有的靜態final域表示。這種域的名稱由大寫字母組成,並以下劃線分割每個字母;更重要的是,這種域要麽包含基本類型,要麽包含指向不可變的對象的引用

長度不為零的數組總是可變的,所以公有靜態數組域或者返回這種域的訪問方法幾乎總是錯誤的。

總結:除了公有的靜態final域之外,公有類都不應該包含公有域。並且保證公有的靜態final域所引用的對象都是不可變的。

使類和成員的可訪問性最小化