Java基礎-面向?qū)ο?Java 包(package)

Java工程師知識樹 / Java基礎


Java 包(package)

為了更好地組織類灵奖,Java 提供了包機制坑鱼,用于區(qū)別類名的命名空間栏账。

包的作用

  1. 把功能相似或相關的類或接口組織在同一個包中,方便類的查找和使用跨算。
  2. 如同文件夾一樣讨勤,包也采用了樹形目錄的存儲方式。同一個包中的類名字是不同的,不同的包中的類的名字是可以相同的淆储,當同時調(diào)用兩個不同包中相同類名的類時,應該加上包名加以區(qū)別家浇。因此本砰,包可以避免名字沖突。
  3. 包也限定了訪問權(quán)限钢悲,擁有包訪問權(quán)限的類才能訪問某個包中的類点额。

Java 使用包(package)這種機制是為了防止命名沖突,訪問控制莺琳,提供搜索和定位類(class)还棱、接口、枚舉(enumerations)和注釋(annotation)等惭等。

包語句的語法格式為:

package pkg1[.pkg2[.pkg3…]];

一個包(package)可以定義為一組相互聯(lián)系的類型(類珍手、接口、枚舉和注釋)辞做,為這些類型提供訪問保護和命名空間管理的功能琳要。

以下是一些 Java 中的包:

  • java.lang-打包基礎的類
  • java.io-包含輸入輸出功能的函數(shù)

開發(fā)者可以自己把一組類和接口等打包,并定義自己的包秤茅。而且在實際開發(fā)中這樣做是值得提倡的稚补,當你自己完成類的實現(xiàn)之后,將相關的類分組框喳,可以讓其他的編程者更容易地確定哪些類课幕、接口、枚舉和注釋等是相關的帖努。

由于包創(chuàng)建了新的命名空間(namespace)撰豺,所以不會跟其他包中的任何名字產(chǎn)生命名沖突。使用包這種機制拼余,更容易實現(xiàn)訪問控制污桦,并且讓定位相關類更加簡單。

創(chuàng)建包

創(chuàng)建包的時候匙监,你需要為這個包取一個合適的名字凡橱。之后,如果其他的一個源文件包含了這個包提供的類亭姥、接口稼钩、枚舉或者注釋類型的時候,都必須將這個包的聲明放在這個源文件的開頭达罗。

包聲明應該在源文件的第一行坝撑,每個源文件只能有一個包聲明静秆,這個文件中的每個類型都應用于它。

如果一個源文件中沒有使用包聲明巡李,那么其中的類抚笔,函數(shù),枚舉侨拦,注釋等將被放在一個無名的包(unnamed package)中殊橙。

import 關鍵字

為了能夠使用某一個包的成員,我們需要在 Java 程序中明確導入該包狱从。使用 "import" 語句可完成此功能膨蛮。

在 java 源文件中 import 語句應位于 package 語句之后,所有類的定義之前季研,可以沒有敞葛,也可以有多條,其語法格式為:

import package1[.package2…].(classname|*);

如果在一個包中训貌,一個類想要使用本包中的另一個類制肮,那么該包名可以省略冒窍。

==注意:==

類文件中可以包含任意數(shù)量的 import 聲明递沪。import 聲明必須在包聲明之后,類聲明之前综液。

類放在包中會有兩種主要的結(jié)果:

  • 包名成為類名的一部分
  • 包名必須與相應的字節(jié)碼所在的目錄結(jié)構(gòu)相吻合款慨。

管理文件

下面是管理你自己 java 中文件的一種簡單方式:

將類、接口等類型的源碼放在一個文本中谬莹,這個文件的名字就是這個類型的名字檩奠,并以.java作為擴展名。

通常附帽,一個公司使用它互聯(lián)網(wǎng)域名的顛倒形式來作為它的包名.

編譯的時候埠戳,編譯器為包中定義的每個類、接口等類型各創(chuàng)建一個不同的輸出文件蕉扮,輸出文件的名字就是這個類型的名字整胃,并加上 .class 作為擴展后綴。

編譯之后的 .class 文件應該和 .java 源文件一樣喳钟,它們放置的目錄應該跟包的名字對應起來屁使。但是,并不要求 .class 文件的路徑跟相應的 .java 的路徑一樣奔则。你可以分開來安排源碼和類的目錄蛮寂。

<path-one>\sources\com\runoob\test\Runoob.java
<path-two>\classes\com\runoob\test\Google.class

這樣,你可以將你的類目錄分享給其他的編程人員易茬,而不用透露自己的源碼酬蹋。用這種方法管理源碼和類文件可以讓編譯器和java 虛擬機(JVM)可以找到你程序中使用的所有類型。

類目錄的絕對路徑叫做 class path。設置在系統(tǒng)變量 CLASSPATH 中范抓。編譯器和 java 虛擬機通過將 package 名字加到 class path 后來構(gòu)造 .class 文件的路徑写半。

<path- two>\classes 是 class path,package 名字是 com.runoob.test,而編譯器和 JVM 會在 <path-two>\classes\com\runoob\test 中找 .class 文件尉咕。

一個 class path 可能會包含好幾個路徑叠蝇,多路徑應該用分隔符分開。默認情況下年缎,編譯器和 JVM 查找當前目錄悔捶。JAR 文件按包含 Java 平臺相關的類,所以他們的目錄默認放在了 class path 中单芜。

設置 CLASSPATH 系統(tǒng)變量

用下面的命令顯示當前的CLASSPATH變量:

Windows 平臺(DOS 命令行下):C:> set CLASSPATH
UNIX 平臺(Bourne shell 下):# echo $CLASSPATH

刪除當前CLASSPATH變量內(nèi)容:

Windows 平臺(DOS 命令行下):C:> set CLASSPATH=
UNIX 平臺(Bourne shell 下):# unset CLASSPATH; export CLASSPATH

設置CLASSPATH變量:

Windows 平臺(DOS 命令行下): C:> set CLASSPATH=C:\users\hughjin\java\classes
UNIX 平臺(Bourne shell 下):# CLASSPATH=/home/hughjin/java/classes; export CLASSPATH

Java常見包作用

包名 簡介
java.lang 該包提供了Java編程的基礎類蜕该,例如 Object、Math洲鸠、String堂淡、StringBuffer、System扒腕、Thread等绢淀,不使用該包就很難編寫Java代碼了。
java.util 該包提供了包含集合框架瘾腰、遺留的集合類皆的、事件模型、日期和時間實施蹋盆、國際化和各種實用工具類(字符串標記生成器费薄、隨機數(shù)生成器和位數(shù)組)。
java.io 該包通過文件系統(tǒng)栖雾、數(shù)據(jù)流和序列化提供系統(tǒng)的輸入與輸出楞抡。
java.net 該包提供實現(xiàn)網(wǎng)絡應用與開發(fā)的類。
java.sql 該包提供了使用Java語言訪問并處理存儲在數(shù)據(jù)源(通常是一個關系型數(shù)據(jù)庫)中的數(shù)據(jù)API析藕。
java.awt 這兩個包提供了GUI設計與開發(fā)的類召廷。java.awt包提供了創(chuàng)建界面和繪制圖形圖像的所有類,而javax.swing包提供了一組“輕量級”的組件噪径,盡量讓這些組件在所有平臺上的工作方式相同柱恤。
javax.swing 提供了與自然語言無關的方式來處理文本、日期找爱、數(shù)字和消息的類和接口梗顺。

Java支持四種不同的訪問權(quán)限:

修飾符 說明
public 共有的,對所有類可見车摄。
protected 受保護的寺谤,對同一包內(nèi)的類和所有子類可見仑鸥。
private 私有的,在同一類內(nèi)可見变屁。
默認的 在同一包內(nèi)可見眼俊。默認不使用任何修飾符。
訪問范圍 private friendly(默認) protected public
同一個類 可訪問 可訪問 可訪問 可訪問
同一包中的其他類 不可訪問 可訪問 可訪問 可訪問
不同包中的子類 不可訪問 不可訪問 可訪問 可訪問
不同包中的非子類 不可訪問 不可訪問 不可訪問 可訪問
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末粟关,一起剝皮案震驚了整個濱河市疮胖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌闷板,老刑警劉巖澎灸,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異遮晚,居然都是意外死亡性昭,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門县遣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來糜颠,“玉大人,你說我怎么就攤上這事萧求∑湫耍” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵饭聚,是天一觀的道長忌警。 經(jīng)常有香客問我,道長秒梳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任箕速,我火速辦了婚禮酪碘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘盐茎。我一直安慰自己兴垦,他們只是感情好,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布字柠。 她就那樣靜靜地躺著探越,像睡著了一般。 火紅的嫁衣襯著肌膚如雪窑业。 梳的紋絲不亂的頭發(fā)上钦幔,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機與錄音常柄,去河邊找鬼鲤氢。 笑死搀擂,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的卷玉。 我是一名探鬼主播哨颂,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼相种!你這毒婦竟也來了威恼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤寝并,失蹤者是張志新(化名)和其女友劉穎沃测,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體食茎,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡蒂破,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了别渔。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片附迷。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖哎媚,靈堂內(nèi)的尸體忽然破棺而出喇伯,到底是詐尸還是另有隱情,我是刑警寧澤拨与,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布稻据,位于F島的核電站,受9級特大地震影響买喧,放射性物質(zhì)發(fā)生泄漏捻悯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一淤毛、第九天 我趴在偏房一處隱蔽的房頂上張望今缚。 院中可真熱鬧,春花似錦低淡、人聲如沸姓言。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽何荚。三九已至,卻和暖如春猪杭,著一層夾襖步出監(jiān)牢的瞬間餐塘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工胁孙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留唠倦,地道東北人称鳞。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像稠鼻,于是被迫代替她去往敵國和親冈止。 傳聞我的和親對象是個殘疾皇子牡借,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容