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

第六章 訪問許可權控制

                        第六章  訪問許可權控制
這一章講的內容不是很難,都是我們在開發中常用的知識,這裡講得非常詳細,很快就能夠理解,所以主要還是多注意一下,同時也幫助我們加深印象。 6.1  包:庫單元        包內包含有一組類,它們在單一的名字空間之下被組織在了一起。        例如,在Java的標準釋出中有一個工具庫,它被組織在java.util名字空間之下。java.util中有一個叫做ArrayList的類,使用ArrayList的一種方式是用其全名java.util.ArrayList來指定。        java.util.ArrayList list=new java.util.ArrayList(); 這樣寫就使程式變得冗長了,因此可以轉換使用import關鍵字        import  java.util.*        這樣就可以將程式碼簡化成:ArrayList list=new ArrayList(); 6.2  Java訪問許可權修飾詞
       public、protected和private這幾個Java訪問許可權修飾詞在使用時,是置於類中每個成員的定義之前的——無論它是一個域還是一個方法。每個訪問許可權修飾詞僅控制它所修飾的特定定義的訪問權。        如果不提供任何訪問許可權修飾詞,則意味著它是“包訪問許可權”。因此,無論如何,所以事物都具有某種形式的訪問許可權控制。 6.2.1  包訪問許可權         簡單的來說,就是同一個包當中的所有類的成員都是protected修飾的 或者沒有任何修飾的都可以訪問。但是與其他包就不能相互訪問了。 6.2.2  public:介面訪問許可權         使用關鍵字public,就意味著public之後緊跟著的成員宣告自己對每個人都是可用的,尤其是使用類庫的客戶程式設計師更是如此。 6.2.3 private:你無法訪問
       關鍵字private的意思是,除了包含該成員的類之外,其他任何類都無法訪問這個成員。如果構造器用private修飾,則在其他內中就不能通過這個構造器來例項化物件了。 6.2.4 protected:繼承訪問許可權        在繼承關係中,當基類中的某個成員希望能夠在匯出類能夠被使用,然後只要用protected修飾就可以了。 6.3  介面和實現       訪問許可權的控制常被稱為是具體實現的隱藏。把資料和方法包裝進類中,以及具體實現的隱藏,常共同被稱作是封裝。       出於兩個很重要的原因,訪問許可權控制將許可權的邊界劃在了資料型別的內部。第一個原因是要設定客戶端程式設計師可以使用和不可用使用的界限。可以在結構中構建自己的內部機制,而不必擔心客戶端程式設計師會偶然地將內部機制當作是他們可以使用的介面的一部分。       這個原因直接引出了第二個原因,即將介面和具體實現進行分離。如果結構是用於一組程式之中,而客戶端程式設計師除了可以向介面傳送資訊之外什麼也不可以做的話,那麼就可以隨意更改所有不是public的東西,而不會破環客戶端程式碼。 6.4  類的訪問許可權
      在Java中,訪問許可權修飾詞也可以用於確定庫中的哪些類對於該庫的使用者是可用的。如果希望某個類可以為某個客戶端程式設計師所用,就可以通過public來修飾。這裡還有一些額外限制:      1、每個編譯單元(檔案)都只能有一個public類。這表示,每個編譯單元都有單一的公共介面,用public類來表現。該介面可以按要求包含眾多的支援包訪問許可權的類。如果在某個編譯單元內有一個以上的public類,編譯器就會給出錯誤資訊。這句話我們可以在Java程式中的類外面再加一個public修飾的類就會發現報錯了,很容易檢驗的。      2、public類的名稱必須完全與含有該編譯單元的檔名相匹配,包括大小寫。      3、雖然不是很常用,但是編譯單元內完全不帶public類也是可能的。這種情況下,可以隨意對檔案命名。