
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(){}