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