1. 程式人生 > 實用技巧 >第六章 訪問許可權控制

第六章 訪問許可權控制

第六章 訪問許可權控制

6.1 包:庫單元

import:提供管理名字空間的機制。

編譯單元:一個Java元旦嗎檔案。其中只有一個public類,並且名稱與檔名相同。這個檔案中也可以有其他的類,但是不能是public類,並且主要是為了對public類提供支援的。

6.1.1 程式碼組織

1、Java可執行程式是一組可以打包並壓縮為一個Java文件檔案的.class檔案。

Java直譯器負責這些檔案的查詢、裝在和解釋。

2、類庫其實是一組類檔案。

其中每個檔案都有一個public類和任意數量的非public類。因此每個檔案都有一個構件。

如果希望這些構件從屬於同一個群組,那麼我們就要使用關鍵字package。

3、package應是檔案中除註釋外的第一句程式碼:

package access

6.1.2 建立獨一無二的包名

1、將特定包的所有.class檔案都放在一個目錄下。

同時解決了兩個問題:怎樣建立獨一無二的名稱以及怎樣查詢有可能隱藏於目錄結構某處的類。

2、按照慣例,包名的第一部分是作者域名反順序。所以就解決了如何建立獨一無二的包名。

第二部分會把你的package名稱分解為機器上的目錄。

3、衝突:兩個不同的包卻含有同一個類名。

這個時候就不能簡寫了,就要指定完整的類的路徑。

6.1.3 定製工具庫

自己可以開始寫自己的工具庫了。

6.1.4 用import改變行為

1、Java沒有C的條件編譯功能。

條件編譯:切換開關併產生不同的行為。C用其來實現跨平臺。

但是Java本身就是一個跨平臺的語言,所以不必擁有條件編譯的功能。

2、條件編譯同樣存在用處:例如除錯版程式碼擁有除錯功能,但是正式版程式碼不具有除錯功能。

6.1.5 對使用包的忠告

1、包的名稱對應目錄路徑。

2、必須能在CLASSRATH中能查詢到。

6.2 Java訪問許可權修飾詞

6.2.1 包訪問許可權

1、default(friendly):這意味著當前的包中的所有其他類對那個成員都具有訪問許可權,但是說對於這個包外的所有類,這個成員顯示的是private。

2、訪問器(accessor\get方法)、變異器(mutator\set方法)。這對OOP而言是最優雅的方式,也是JavaBeans的原理。

6.2.2 public:介面訪問許可權

1、public意味著所有人都可以用。

2、預設包:對於處於同一級目錄的檔案,如果沒有給他們指定包的話,其實它們是存在於同一個預設包中的。

6.2.3 private:你無法訪問

1、除了包含此成員的類之外,其餘任何類都無法訪問這個成員。

2、任何肯定為一個類的“助手”的方法,都可以標記為'private'。

6.2.4 protected:繼承訪問許可權

1、提供包訪問許可權。

2、允許派生類訪問(基本就是對其他包中的派生類來說的)。

6.3 介面和實現

1、把資料和方法裝進類中,以及把具體實現隱藏起來,這被稱為封裝。

2、封裝的原因:規定程式使用者的使用邊界問題。

							將介面和實現分離開來。

6.4 類的訪問許可權

1、為了控制某個類的訪問許可權,修飾詞必須出現在關鍵字class之前。

2、每個編譯單元只能有一個public類。

雖然不常用,但是編譯單元內完全不帶public類也是可能的。

3、類的訪問許可權其實就兩種:public和protected。主要的區別就是在建立類的物件的時候的區別。

如果不宣告public,就自動標記為包訪問許可權。

6.5 總結

1、設定訪問許可權控制,就是在類庫設計者和客戶端程式設計師之間建立一種界限,同時也是建立一種聯絡。

類庫設計者不想讓客戶端程式設計師看到自己的原始碼,只想讓他們使用自己開發出來的功能。

2、關鍵字package、包的命名方式、import使得你對Java的名稱進行完全控制。

3、控制權限的原因:一是為了使使用者不觸碰不改觸碰的部分。

			二是讓類庫設計者可以更改自己的類庫實現。

4、使用者只需要使用就行了,這樣即使類庫更新了他們也不用去修改自己的程式碼。

5、類的公共介面是使用者真正能看到的,所以這一部分的分析和設計是決定該類是否正確的重要部分。