Java 訪問許可權控制(6)

Seasons20發表於2019-01-19

訪問控制(或隱藏具體實現)與“最初的實現並不恰當”有關.

1.包

  • 類庫是一組類檔案,其中每個檔案都有一個public類,以及任意數量的非public類.
  • 每個檔案都有一個構件,如果希望這些構建從屬於同一個群組,就可以使用package關鍵字.
  • 如果使用package關鍵字,它必須是除註釋以外的第一句程式程式碼.
  • packageimport:將單一的全域性名字分隔開,解決命名衝突問題.
  • 一個包從未真正將被打包的東西包裝成單一的檔案,並且一個包可以由許多.class檔案構成,一種合乎邏輯的做法是將特定包的所有.class檔案都置於一個目錄下(利用作業系統的層次化的檔案結構來解決混亂問題(一種方式)).
  • Java直譯器的執行過程:找到環境變數CLASSPATH,其目錄作為查詢.class檔案的根目錄;從根目錄開始,直譯器獲取包的名稱並將.替換成路徑符;連線路徑.
  • JDK2即使未設立CLASSPATH,也可以編譯並執行基本的Java程式.
  • 同一程式中有衝突的名字,必須指定全名.
  • 靜態匯入 import static.
  • Java沒有C的條件編譯功能(不更改任何程式程式碼,就能切換開關併產生不同的行為).
  • 除錯功能在開發過程中是開啟的,而在釋出的產品中式禁用的.

2.Java訪問許可權修飾詞

  • 預設包:如果沒有給類設定包名稱,則該類隸屬於該目錄的預設包之中.
  • 包訪問許可權:預設訪問許可權(friendly).
  • public:介面訪問許可權.
  • private:除該類之外,其他任何類都無法訪問(典型例子:構造器私有化).
  • protected:繼承訪問許可權.
  • 獲得某成員的訪問權的途徑:1.使該成員成為public;2.不加修飾符並置於同一個包中;3.使用繼承;4.提供訪問器(accessor)和變異器(mutator)方法(get/set方法).

3.介面和實現

  • 訪問許可權的控制常被成為是 具體實現的隱藏.
  • 把資料和方法包裝進類中,以及具體實現的隱藏,常共同被稱作是 封裝.其結果是一個同時帶有特徵和行為的資料型別.
  • 訪問許可權控制將許可權的邊界劃在了資料型別的內部,原因:1.要設定客戶端程式設計師可以使用和不可以使用的界限;2.將介面和具體實現進行分離.
  • 類瀏覽器:一種以非常有用的方式來查閱所有可用的類,並顯示出可用成員的工具.===========

4.類的訪問許可權

  • 每個編譯單元(檔案)都只能有一個public類.
  • public類的名稱必須完全與含有該編譯單元的檔名相匹配,包括大小寫.
  • 編譯單元內完全不帶public類也是可能的.
  • 類既不可以是private,也不可以是protected,只能是包訪問許可權或者public.
  • 如果不希望其他任何人對該類擁有訪問許可權,可以把所有的構造器都制定為private,從而阻止任何人建立該類的物件,但是有一個例外,就是在該類的static成員內部可以建立.
  • 如果一個包訪問許可權的類的某個static成員是public的話,則客戶端程式設計師仍舊可以呼叫該static成員,儘管他們並不能生成該類的物件.

END

相關文章