摘要:包命名規(guī)范使用小寫字母。包訪問權(quán)限為把類聚在一個(gè)包中的做法提供了意義和理由。接口訪問權(quán)限使用關(guān)鍵字,意味著被它修飾的成員對(duì)所有類可見。繼承訪問權(quán)限基類的創(chuàng)建者希望某些特定成員,把它的訪問權(quán)限賦予派生類也不是所有類。
點(diǎn)擊進(jìn)入我的博客 6.1包:庫(kù)單元
import java.util.ArrayList; import java.util.*;
當(dāng)編寫一個(gè)Java源代碼文件(編譯單元)時(shí),每個(gè)編譯單元必須有一個(gè)后綴.java,而在編譯單元內(nèi)則可以有至多一個(gè)public類,該類名必須和文件名相同。
如果編譯單元內(nèi)還有其他的類,那么在包之外是不可見的。
6.1.1 代碼組織當(dāng)編譯一個(gè).java文件時(shí),在.java文件中的每個(gè)類都會(huì)有一個(gè)輸出文件,而該輸出文件的名稱與.java文件中的每個(gè)類名稱相同,只是后綴名改為.class。
Java可運(yùn)行程序是一組可以打包并壓縮為一個(gè)Java文檔文件(JAR)的.class文件,Java解釋器負(fù)責(zé)這些文件的查找、狀態(tài)和解釋。
package語句必須是文件中除注釋以外的第一句程序代碼。
Java包命名規(guī)范使用小寫字母。
package和import關(guān)鍵字允許你做的,是將單一的全局名字空間分割開,防止名稱沖突。
6.1.2 創(chuàng)建獨(dú)一無二的包名package名稱的第一部分是類的創(chuàng)建者的反順序域名。
把package名稱分解為你機(jī)器的一個(gè)目錄。
Java解釋器的執(zhí)行過程:
找到環(huán)境變量CLASSPATH,CLASSPATH包含一個(gè)或多個(gè)目錄,用于查找.class文件的根目錄。
從根目錄開始,解釋器包的名稱并將每一個(gè).替換成或/。
把CLASSPATH和包路徑拼接得到最終目錄,并查找.class文件。
Sun公司將Java2中的JDK改造的更聰明了一些,未設(shè)置CLASSPATH也可以編譯并運(yùn)行Java程序。
不要錯(cuò)誤的任務(wù)Java總是將當(dāng)前目錄視作查找行為的起點(diǎn),CLASSPATH中的.表示當(dāng)前目錄
引入兩個(gè)名稱相同的類會(huì)引起沖突,所以盡量不要用import *的方式
6.1.3 定制工具庫(kù)略
6.1.4 用import改變行為Java沒有C的條件編譯功能,該功能可以使你不必更改任何程序代碼,就能夠切換開關(guān)并產(chǎn)生不同的行為。(Java去掉此功能可能是因?yàn)镃在絕大數(shù)情況下是用此功能來解決跨平臺(tái)的問題的,即程序代碼的不同部分是根據(jù)不同的平臺(tái)來編譯的。由于Java本身可以自動(dòng)跨越不同的平臺(tái),因此這個(gè)功能對(duì)Java而言就沒有必要了。)
然而,條件編譯還有其他一些有價(jià)值的用途。調(diào)試就是一個(gè)很常見的用途。調(diào)試功能在開發(fā)過程中是開啟的,而在發(fā)布的產(chǎn)品中是禁用的??梢酝ㄟ^修改被導(dǎo)入的package的方法來實(shí)現(xiàn)這一目的,修改的方法是將你程序中的代碼從調(diào)試版改為發(fā)布版。這樣的技術(shù)適用于任何種類的條件代碼。
包必須位于其名稱所指定的目錄中,該目錄必須是在以CLASSPATH開始的目錄中能找到的。
編譯后的代碼通常放在與源代碼不同的目錄中,必須保證JVM(在《Java編程思想》第四版中,此處被錯(cuò)誤的寫成類JVN?。?!)使用CLASSPATH可以找到該路徑。
6.2Java訪問權(quán)限修飾符public、protected、包訪問權(quán)限、private
權(quán)限設(shè)置為public。
默認(rèn)包訪問權(quán)限,在同一包中的其他類,可以訪問。
權(quán)限設(shè)置為public或者protected,通過繼承的子類可以訪問。
設(shè)置為private,提供訪問器和變異器方法(get/set)
6.2.1 包訪問權(quán)限如果不提供訪問權(quán)限關(guān)鍵詞,則意味是“包訪問權(quán)限(也被稱作friendly)”,即默認(rèn)訪問權(quán)限。
包訪問權(quán)限:同一個(gè)包中的所有其他類對(duì)那個(gè)成員有訪問權(quán)限,包之外的無法訪問。
包訪問權(quán)限為把類聚在一個(gè)包中的做法提供了意義和理由。
6.2.2 public:接口訪問權(quán)限使用public關(guān)鍵字,意味著被它修飾的成員對(duì)所有類可見。
6.2.3 private:無法訪問private的意思是,除了包含該成員的類外,其他任何類都無法訪問這個(gè)成員。
如果默認(rèn)構(gòu)造方法被private修飾,那么這個(gè)類無法被繼承。
6.2.4 protected:繼承訪問權(quán)限基類的創(chuàng)建者希望某些特定成員,把它的訪問權(quán)限賦予派生類也不是所有類。
protected也提供包訪問權(quán)限
6.3 接口和實(shí)現(xiàn)訪問權(quán)限的控制通常被稱為是具體實(shí)現(xiàn)的隱藏
封裝:把數(shù)據(jù)和方法包進(jìn)類中,以及其具體實(shí)現(xiàn)的隱藏共同稱為封裝
將接口和實(shí)現(xiàn)分離
6.4 類的訪問權(quán)限每個(gè)編譯單元最多一個(gè)public類
public類名必須和文件名完全相同
編譯單元內(nèi)可以沒有public類,此時(shí)可以隨意命名文件名,但這種方法很少用。
類的訪問權(quán)限只有兩種(內(nèi)部類除外):public、包訪問權(quán)限
如果不希望其他人對(duì)該類擁有訪問權(quán)限,可以把構(gòu)造器設(shè)置為private,單例模式中會(huì)用這種設(shè)置。
6.5 總結(jié)第一個(gè)原因:要設(shè)定客戶端程序員可以使用和不可以使用的界限。
第二個(gè)原因,也是最重要的原因,是為了讓類庫(kù)設(shè)計(jì)者可以更改類的工作方式,而不會(huì)影響對(duì)客戶端程序員產(chǎn)生重大影響。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/72177.html
摘要:而面向?qū)ο髣t是向程序員提供表示問題空間中元素的工具,我們將問題空間中的元素及其在解空間中的表示稱為對(duì)象。為什么要把對(duì)象看作是服務(wù)提供者呢這是將問題分解為對(duì)象集合的一種合理方式。職能太多,可能會(huì)導(dǎo)致對(duì)象的內(nèi)聚性降低。在試圖將子類對(duì)象當(dāng)作其基類 計(jì)算機(jī)是頭腦延伸的工具,是一種不同類型的表達(dá)媒體。本文以背景性的和補(bǔ)充性的材料,介紹包括開發(fā)方法概述在內(nèi)的面向?qū)ο蟪绦蛟O(shè)計(jì)(Object-orie...
摘要:但遠(yuǎn)不止如此,內(nèi)部類了解外部類,并能與之通信。內(nèi)部類還擁有其外圍類的所有元素的訪問權(quán)。普通內(nèi)部類內(nèi)不能有域和方法。特點(diǎn)普通內(nèi)部類對(duì)象隱式的保存了外部類對(duì)象,但嵌套類并非如此。局部?jī)?nèi)部類可以訪問當(dāng)前代碼塊內(nèi)的常量,以及此外圍類的成員。 點(diǎn)擊進(jìn)入我的博客 可以把一個(gè)類的定義放在另一個(gè)類的定義內(nèi)部,這就是內(nèi)部類。Java最晦澀的部分之一。內(nèi)部類看起來就像是一種代碼隱藏機(jī)制,將類只與其他類的...
摘要:抽象類和抽象方法抽象方法這種方法是不完整的,僅有聲明而沒有方法。創(chuàng)建抽象類和抽象方法非常有用,因?yàn)樗麄兛梢允估鄣某橄笮悦鞔_起來,并告訴用戶和編譯器打算怎樣來使用它們。接口用于建立類于類之間的協(xié)議。與抽象類相同,防止客戶端程序員創(chuàng)建該類對(duì)象。 點(diǎn)擊進(jìn)入我的博客 接口和內(nèi)部類為我們提供了一種將接口與實(shí)現(xiàn)分離的更加結(jié)構(gòu)化的方法。 9.1抽象類和抽象方法 抽象方法:這種方法是不完整的,僅有...
摘要:一引用操縱對(duì)象在的世界里,一切都被視為對(duì)象。特點(diǎn)創(chuàng)建程序時(shí),需要知道存儲(chǔ)在棧內(nèi)所有數(shù)據(jù)的確切生命周期,以便上下移動(dòng)堆棧指針。因?yàn)椋赶蛲粔K內(nèi)存空間除了通過對(duì)象引用靜態(tài)變量,我們還可以通過類直接引用靜態(tài)變量 一、引用操縱對(duì)象 在Java的世界里,一切都被視為對(duì)象。操縱的標(biāo)識(shí)符實(shí)際上是對(duì)象的引用, 例如:遙控器與電視的關(guān)系。 可以在沒有對(duì)象關(guān)聯(lián)的情況下,擁有一個(gè)引用。沒有電視機(jī),也可以擁...
摘要:多態(tài)的作用是消除類型之間的耦合關(guān)系。編寫構(gòu)造器準(zhǔn)則用盡可能簡(jiǎn)單的方法使對(duì)象進(jìn)入正常狀態(tài),如果可以的話,避免調(diào)用其他方法。 點(diǎn)擊進(jìn)入我的博客 在面向?qū)ο蟮某绦蛟O(shè)計(jì)語言中,多態(tài)是繼數(shù)據(jù)抽象(封裝)和繼承之后的第三種基本特征。多態(tài)通過分離做什么和怎么做,從另一角度將接口和實(shí)現(xiàn)分離開來。多態(tài)的作用是消除類型之間的耦合關(guān)系。 8.1 再論向上轉(zhuǎn)型 對(duì)象既可以作為它自己的本類使用,也可以作為它的...
閱讀 3411·2021-09-22 15:01
閱讀 535·2019-08-30 11:11
閱讀 976·2019-08-29 16:17
閱讀 1220·2019-08-29 12:23
閱讀 2038·2019-08-26 11:48
閱讀 3191·2019-08-26 11:48
閱讀 1432·2019-08-26 10:33
閱讀 1942·2019-08-26 10:30