5: Hiding the Implementation(隱藏實(shí)現(xiàn))
package:類庫(kù)的單元
創(chuàng)建獨(dú)一無(wú)二的package名字
Java的約定是package名字的第一部分應(yīng)該是類的創(chuàng)建者的Internet域名的反寫。
使用JAR文件的時(shí)候會(huì)有一點(diǎn)變化。除了要告訴它該到哪里去找這個(gè)JAR文件,你必須將文件名放到CLASSPATH里面。
沖突
一個(gè)自定義的工具類庫(kù)
使用import來(lái)改變程序的行為方式
使用package的忠告
Java的訪問控制符
package訪問權(quán)限
如果你想讓別人能訪問到這個(gè)成員,那唯一辦法就是:
1. 把這個(gè)成員做成public的。這樣任何人,任何地方就都能訪問到它了。
2. 不放任何訪問控制符,賦予這個(gè)成員package權(quán)限,然后往package里面放其它類。這樣,這個(gè)package的其它類就能訪問這個(gè)成員了。
3. 繼承類除了能訪問父類的public成員之外,還可以訪問其protected成員(但是不能訪問private成員)。只有當(dāng)兩個(gè)類都同屬一個(gè)package的時(shí)候,它才能訪問package成員。
4. 提供“訪問器/修改器”方法(accessor/mutator方法,也被稱為“get/set”方法)。以O(shè)OP的觀點(diǎn)衡量,這是最合理的做法,而且也是JavaBean的基礎(chǔ)。
public:訪問接口的權(quán)限
默認(rèn)的package
Java會(huì)認(rèn)為這類文件是屬于這個(gè)目錄的“默認(rèn)”的,因此對(duì)這個(gè)目錄里邊的其它文件來(lái)說,它們就都是package權(quán)限的了。
private:你碰都碰不到!
始終如一地使用private還是很重要的,特別是遇到多線程的時(shí)候。
protect:繼承的訪問權(quán)限
接口(Interface)與實(shí)現(xiàn)(implementation)
類的訪問權(quán)限
1. 每個(gè)編譯單元(文件)只能有一個(gè)public類。這么做的意思是,每個(gè)編譯單元只能有一個(gè)公開的接口,而這個(gè)接口就由其public類來(lái)表示。你可以根據(jù)需要,往這個(gè)文件里面添加任意多個(gè)提供輔助功能的package權(quán)限的類。但是如果這個(gè)編譯單元里面有兩個(gè)或兩個(gè)以上的public類的話,編譯器就會(huì)報(bào)錯(cuò)。
2. public類的名字必須和這個(gè)編譯單元的文件名完全相同,包括大小寫。如果你不遵守,編譯器又要報(bào)錯(cuò)了。
3. 編譯單元里面可以沒有public類,雖然這種情況不常見,但卻是可以的。這是,你就能隨意為文件起名字了。
總結(jié)
練習(xí)
「讀書筆記」Thinking in Java 3rd Edition - 5: Hiding the Implementation
只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。 | ||
![]() |
||
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
|
||
相關(guān)文章:
|
||