亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

《Java編程思想》筆記6.訪問(wèn)權(quán)限控制

wangbjun / 3338人閱讀

摘要:包命名規(guī)范使用小寫字母。包訪問(wèn)權(quán)限為把類聚在一個(gè)包中的做法提供了意義和理由。接口訪問(wèn)權(quán)限使用關(guān)鍵字,意味著被它修飾的成員對(duì)所有類可見(jiàn)。繼承訪問(wèn)權(quán)限基類的創(chuàng)建者希望某些特定成員,把它的訪問(wèn)權(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)還有其他的類,那么在包之外是不可見(jiàn)的。

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語(yǔ)句必須是文件中除注釋以外的第一句程序代碼。

Java包命名規(guī)范使用小寫字母。

packageimport關(guān)鍵字允許你做的,是將單一的全局名字空間分割開(kāi),防止名稱沖突。

6.1.2 創(chuàng)建獨(dú)一無(wú)二的包名

package名稱的第一部分是類的創(chuàng)建者的反順序域名。

package名稱分解為你機(jī)器的一個(gè)目錄。

Java解釋器的執(zhí)行過(guò)程:

找到環(huán)境變量CLASSPATH,CLASSPATH包含一個(gè)或多個(gè)目錄,用于查找.class文件的根目錄。

從根目錄開(kāi)始,解釋器包的名稱并將每一個(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沒(méi)有C的條件編譯功能,該功能可以使你不必更改任何程序代碼,就能夠切換開(kāi)關(guān)并產(chǎn)生不同的行為。(Java去掉此功能可能是因?yàn)镃在絕大數(shù)情況下是用此功能來(lái)解決跨平臺(tái)的問(wèn)題的,即程序代碼的不同部分是根據(jù)不同的平臺(tái)來(lái)編譯的。由于Java本身可以自動(dòng)跨越不同的平臺(tái),因此這個(gè)功能對(duì)Java而言就沒(méi)有必要了。)
然而,條件編譯還有其他一些有價(jià)值的用途。調(diào)試就是一個(gè)很常見(jiàn)的用途。調(diào)試功能在開(kāi)發(fā)過(guò)程中是開(kāi)啟的,而在發(fā)布的產(chǎn)品中是禁用的??梢酝ㄟ^(guò)修改被導(dǎo)入的package的方法來(lái)實(shí)現(xiàn)這一目的,修改的方法是將你程序中的代碼從調(diào)試版改為發(fā)布版。這樣的技術(shù)適用于任何種類的條件代碼。

6.1.5 對(duì)使用包的忠告

包必須位于其名稱所指定的目錄中,該目錄必須是在以CLASSPATH開(kāi)始的目錄中能找到的。

編譯后的代碼通常放在與源代碼不同的目錄中,必須保證JVM(在《Java編程思想》第四版中,此處被錯(cuò)誤的寫成類JVN?。。?/strong>)使用CLASSPATH可以找到該路徑。

6.2Java訪問(wèn)權(quán)限修飾符

public、protected、包訪問(wèn)權(quán)限、private

取得對(duì)某成員(屬性和方法)的實(shí)現(xiàn)方法有下面四種情況:

權(quán)限設(shè)置為public。

默認(rèn)包訪問(wèn)權(quán)限,在同一包中的其他類,可以訪問(wèn)。

權(quán)限設(shè)置為public或者protected,通過(guò)繼承的子類可以訪問(wèn)。

設(shè)置為private,提供訪問(wèn)器和變異器方法(get/set)

6.2.1 包訪問(wèn)權(quán)限

如果不提供訪問(wèn)權(quán)限關(guān)鍵詞,則意味是“包訪問(wèn)權(quán)限(也被稱作friendly)”,即默認(rèn)訪問(wèn)權(quán)限。

包訪問(wèn)權(quán)限:同一個(gè)包中的所有其他類對(duì)那個(gè)成員有訪問(wèn)權(quán)限,包之外的無(wú)法訪問(wèn)。

包訪問(wèn)權(quán)限為把類聚在一個(gè)包中的做法提供了意義和理由。

6.2.2 public:接口訪問(wèn)權(quán)限

使用public關(guān)鍵字,意味著被它修飾的成員對(duì)所有類可見(jiàn)。

6.2.3 private:無(wú)法訪問(wèn)

private的意思是,除了包含該成員的類外,其他任何類都無(wú)法訪問(wèn)這個(gè)成員。

如果默認(rèn)構(gòu)造方法被private修飾,那么這個(gè)類無(wú)法被繼承。

6.2.4 protected:繼承訪問(wèn)權(quán)限

基類的創(chuàng)建者希望某些特定成員,把它的訪問(wèn)權(quán)限賦予派生類也不是所有類。

protected也提供包訪問(wèn)權(quán)限

6.3 接口和實(shí)現(xiàn)

訪問(wèn)權(quán)限的控制通常被稱為是具體實(shí)現(xiàn)的隱藏

封裝:把數(shù)據(jù)和方法包進(jìn)類中,以及其具體實(shí)現(xiàn)的隱藏共同稱為封裝

將接口和實(shí)現(xiàn)分離

6.4 類的訪問(wèn)權(quán)限

每個(gè)編譯單元最多一個(gè)public

public類名必須和文件名完全相同

編譯單元內(nèi)可以沒(méi)有public類,此時(shí)可以隨意命名文件名,但這種方法很少用。

類的訪問(wèn)權(quán)限只有兩種(內(nèi)部類除外):public包訪問(wèn)權(quán)限

如果不希望其他人對(duì)該類擁有訪問(wèn)權(quán)限,可以把構(gòu)造器設(shè)置為private,單例模式中會(huì)用這種設(shè)置。

6.5 總結(jié)
控制對(duì)成員的訪問(wèn)權(quán)限有兩個(gè)原因

第一個(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://www.ezyhdfw.cn/yun/72177.html

相關(guān)文章

  • Java編程思想》讀書筆記-對(duì)象導(dǎo)論

    摘要:而面向?qū)ο髣t是向程序員提供表示問(wèn)題空間中元素的工具,我們將問(wèn)題空間中的元素及其在解空間中的表示稱為對(duì)象。為什么要把對(duì)象看作是服務(wù)提供者呢這是將問(wèn)題分解為對(duì)象集合的一種合理方式。職能太多,可能會(huì)導(dǎo)致對(duì)象的內(nèi)聚性降低。在試圖將子類對(duì)象當(dāng)作其基類 計(jì)算機(jī)是頭腦延伸的工具,是一種不同類型的表達(dá)媒體。本文以背景性的和補(bǔ)充性的材料,介紹包括開(kāi)發(fā)方法概述在內(nèi)的面向?qū)ο蟪绦蛟O(shè)計(jì)(Object-orie...

    NickZhou 評(píng)論0 收藏0
  • Java編程思想筆記10.內(nèi)部類

    摘要:但遠(yuǎn)不止如此,內(nèi)部類了解外部類,并能與之通信。內(nèi)部類還擁有其外圍類的所有元素的訪問(wèn)權(quán)。普通內(nèi)部類內(nèi)不能有域和方法。特點(diǎn)普通內(nèi)部類對(duì)象隱式的保存了外部類對(duì)象,但嵌套類并非如此。局部?jī)?nèi)部類可以訪問(wèn)當(dāng)前代碼塊內(nèi)的常量,以及此外圍類的成員。 點(diǎn)擊進(jìn)入我的博客 可以把一個(gè)類的定義放在另一個(gè)類的定義內(nèi)部,這就是內(nèi)部類。Java最晦澀的部分之一。內(nèi)部類看起來(lái)就像是一種代碼隱藏機(jī)制,將類只與其他類的...

    wslongchen 評(píng)論0 收藏0
  • Java編程思想筆記9.接口

    摘要:抽象類和抽象方法抽象方法這種方法是不完整的,僅有聲明而沒(méi)有方法。創(chuàng)建抽象類和抽象方法非常有用,因?yàn)樗麄兛梢允估鄣某橄笮悦鞔_起來(lái),并告訴用戶和編譯器打算怎樣來(lái)使用它們。接口用于建立類于類之間的協(xié)議。與抽象類相同,防止客戶端程序員創(chuàng)建該類對(duì)象。 點(diǎn)擊進(jìn)入我的博客 接口和內(nèi)部類為我們提供了一種將接口與實(shí)現(xiàn)分離的更加結(jié)構(gòu)化的方法。 9.1抽象類和抽象方法 抽象方法:這種方法是不完整的,僅有...

    JessYanCoding 評(píng)論0 收藏0
  • Java編程思想筆記01------一切都是對(duì)象

    摘要:一引用操縱對(duì)象在的世界里,一切都被視為對(duì)象。特點(diǎn)創(chuàng)建程序時(shí),需要知道存儲(chǔ)在棧內(nèi)所有數(shù)據(jù)的確切生命周期,以便上下移動(dòng)堆棧指針。因?yàn)?,指向同一塊內(nèi)存空間除了通過(guò)對(duì)象引用靜態(tài)變量,我們還可以通過(guò)類直接引用靜態(tài)變量 一、引用操縱對(duì)象 在Java的世界里,一切都被視為對(duì)象。操縱的標(biāo)識(shí)符實(shí)際上是對(duì)象的引用, 例如:遙控器與電視的關(guān)系。 可以在沒(méi)有對(duì)象關(guān)聯(lián)的情況下,擁有一個(gè)引用。沒(méi)有電視機(jī),也可以擁...

    yuanxin 評(píng)論0 收藏0
  • Java編程思想筆記8.多態(tài)

    摘要:多態(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ì)語(yǔ)言中,多態(tài)是繼數(shù)據(jù)抽象(封裝)和繼承之后的第三種基本特征。多態(tài)通過(guò)分離做什么和怎么做,從另一角度將接口和實(shí)現(xiàn)分離開(kāi)來(lái)。多態(tài)的作用是消除類型之間的耦合關(guān)系。 8.1 再論向上轉(zhuǎn)型 對(duì)象既可以作為它自己的本類使用,也可以作為它的...

    chinafgj 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<