Think in Java 第六章(訪問權(quán)限控制)

信仰
6.1 包:庫(kù)單元

當(dāng)編寫一個(gè)Java源碼文件時(shí),此文件被稱為編譯單元。每個(gè)編譯單元都必須有一個(gè)后綴名.java,在編譯單元內(nèi)可以有一個(gè)public類,該類的名稱必須與源文件名稱相同。每個(gè)編譯單元只能有一個(gè)public類,否則編譯器不會(huì)接受,編譯單元內(nèi)的其他類為public類提供支持。

  • 6.11 代碼組織
    當(dāng)編譯一個(gè).java文件,在.java文件的每個(gè)類都會(huì)有一個(gè)輸出文件,而該文件的名稱與.java文件中每個(gè)類的名稱相同,只是多了一個(gè).class后綴。Java可運(yùn)行程序是一種可以打包并壓縮為一個(gè)Java文檔文件的.class文件。Java解釋器負(fù)責(zé)這些文件的查找、裝載和解釋。
  • 6.12 創(chuàng)建獨(dú)一無二的包名
    域名反寫

6.2 訪問權(quán)限修飾符

public protected和privaate這幾個(gè)Java訪問權(quán)限修飾詞在使用時(shí),是置于類中每個(gè)成員定義之前的無論它是一個(gè)域還是一個(gè)方法。
如果不修飾默認(rèn)包訪問權(quán)限。


  • 6.21 包訪問權(quán)限

對(duì)某成員訪問的唯一途徑:
1> 使該成員為public。于是,無論是誰,無論在哪里,都可以訪問成員。
2>通過不加訪問權(quán)限修飾詞并將其他類置于同一個(gè)包內(nèi)的方式給成員賦予包訪問權(quán)。于是包內(nèi)的其他類都可以訪問該成員。

  • 6.22 public:接口訪問權(quán)限
    使用關(guān)鍵字public,public之后緊跟著的成員聲明自己對(duì)每個(gè)人都可用。
  • 6.23 private:你無法訪問
    除了包含該成員的類外,其他任何類都無法訪問這個(gè)成員(當(dāng)前類)

class Sundae{
 private Sundae(){}
 static Sundae makeASundae(){return new Sundae();}
}

這是一個(gè)控制如何創(chuàng)建對(duì)象,并阻止別人直接訪問某個(gè)特定的構(gòu)造器(或全部構(gòu)造器)。

  • 6.24 protected:繼承訪問權(quán)限
    當(dāng)前包 子孫類
6.3 接口的實(shí)現(xiàn)

推薦public成員置于開頭,后面跟著protected、包訪問權(quán)限和private成員的創(chuàng)建類的形式。這樣做的好處是類的使用者可以從頭讀起,首先閱讀對(duì)他們而言最為重要的部分,等到遇見作為內(nèi)部實(shí)現(xiàn)細(xì)節(jié)的非public成員時(shí)停止閱讀。

6.4 類的訪問權(quán)限

  • 1 每個(gè)編譯單位都只能有一個(gè)pubic類。每個(gè)編譯單元都有單一的公共接口,用public類來實(shí)現(xiàn)。如果在某個(gè)編譯單元內(nèi)將得到編譯時(shí)錯(cuò)誤。
  • 2 public類的名稱必須完全與還有改編譯單元的文件相匹配,包括大小寫。
  • 3 雖然不常用。編譯單元完全不帶public類也是可能的。在這種情況下隨便對(duì)文件命名。

類即不可以是private的也不可以是protected的。所以對(duì)于類的訪問權(quán)限僅有兩個(gè)選擇:寶訪問權(quán)限或public。如果不希望其他任何人對(duì)該類有用訪問權(quán)限,可以吧構(gòu)造器都指定為private,從而阻止創(chuàng)建對(duì)象,但是有一個(gè)例外,就是你在該類的static成員內(nèi)部創(chuàng)建。

//可以記錄創(chuàng)建多少個(gè)對(duì)象,或是做一些額外的工作
class Soup1(){
  private static soup1 makeSoup{return new Soup1(); }
}
//始終創(chuàng)建一個(gè)對(duì)象 單利
class Soup2(){
  private static soup2  s= new Soup2();
  public static Soup2 access(){return s;}
  public void f(){}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 34,697評(píng)論 18 399
  • 6.1 包:庫(kù)單元 控制對(duì)成員的訪問權(quán)限有兩個(gè)原因: 第一,為了使用戶不要碰觸那些他們不該碰觸的部分,這些部分對(duì)于...
    jchenluo閱讀 435評(píng)論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評(píng)論 19 139
  • 143網(wǎng)中角逐 “唉。。。這真是你命中注定的一場(chǎng)孽緣,大哥知道你的心思,換做是我,我也會(huì)這樣做。。。即然你執(zhí)意要去...
    紅綠燈朋克閱讀 309評(píng)論 0 0
  • 剛剛看完熱播電視劇《大嫁風(fēng)尚》,女主夏燃終于收獲美好的愛情。 電視劇開頭婚禮策劃師夏燃被男朋友蔣劍南拋棄,不知所蹤...
    顧紫閱讀 523評(píng)論 0 0

友情鏈接更多精彩內(nèi)容