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