Java基礎(chǔ)day10筆記:包package|包與包之間的訪問|導(dǎo)入import|jar包

? ? ????這次字?jǐn)?shù)又超了膘侮,發(fā)表不了塔嬉,所以把后面一些剪切過來了玩徊,費(fèi)了好半天勁重新調(diào)整了一下格式,嗚嗚~下次要長記性啦谨究!字?jǐn)?shù)過多就換一篇文章來寫~

????07-面向?qū)ο?包package)

????????什么叫包呢恩袱?

????????我們來思考一下~

????????我們會發(fā)現(xiàn),在進(jìn)行Java程序開發(fā)的時候胶哲,會寫出很多Java文件畔塔。同時,編譯之后會產(chǎn)生很多的類文件。

????????那么當(dāng)類文件產(chǎn)生之后就會出現(xiàn)很多的問題澈吨。

????????比如把敢,當(dāng)類的內(nèi)容不一樣,而類的名稱重復(fù)時谅辣,在一個文件夾下只能存在一個類文件修赞。我們需要對它們用文件夾進(jìn)行區(qū)分,而這個文件夾在Java中通過包表示桑阶。而Java中的包也就是文件系統(tǒng)中的文件夾亿扁。

????????所以娘荡,包:

? ??????1臀晃,對類文件進(jìn)行分類管理苹丸。

? ? ? ? 2,給類提供多層命名空間包归。

????????原來呢锨推,這個文件叫Demo.class。后來因?yàn)橛袃蓚€Demo.class公壤,所以將它們分別存了换可。一個Demo.class存到A文件夾中去了,一個Demo.class存到B文件夾中去了厦幅。

????????這個時候說沾鳄,我想用一下Demo.class,那么要用的是哪一個呢确憨?

????????所以這個時候就要指明译荞,我要A的Demo.class。所以這個時候Demo.class又多了一層擴(kuò)展名稱 A.Demo.class休弃。

????????比如吞歼,日本有秋名山塔猾,臨潼也有秋名山得湘,我們要去秋名山,那到底是哪一個呢市埋?所以要說清楚托呕,我們要去臨潼的秋名山~

?????????3拗军,寫在程序文件的第一行。

????????包名所有的字母都是小寫掌腰。

? ??????4伦忠,類名的全程是 包名.類名吨娜。

????????舉例:

????????編譯绊起,生成了一個class文件:

????????可是運(yùn)行之后發(fā)現(xiàn)出現(xiàn)了類名錯誤:

????????注意,有了包名之后许布,類名的全稱就是包名.類名辣~

????????改一下:

????????可是怎么還是錯啦?

????????噢噢绎晃,原來是我沒有pack這個文件夾呀蜜唾。

????????所以新建一個pack文件夾:

????????并把PackageDemo.class移動到它的里面杂曲。

????????再次執(zhí)行:

????????OK啦!

????????但是袁余,如果每次都得自己新建文件夾擎勘,經(jīng)過幾次之后是不是都要瘋啦!

????????源文件當(dāng)中是不是已經(jīng)明確了包呀泌霍?那我們讓自己生成包货抄,是不是才是最爽噠述召?

????????接下來注意看哦朱转,我們要改一下啦。在編譯的時候积暖,如果源文件當(dāng)中帶著package這樣的關(guān)鍵字定義包的話藤为,在編譯的時候就需要做一件事情,叫做:加參數(shù)夺刑。我們都知道缅疟,一個命令就是一個功能,這個命令如果加了參數(shù)遍愿,就是加了輔助功能存淫。

????????編譯,發(fā)現(xiàn)自動生成了pack文件夾:

????????這時再運(yùn)行沼填,OK啦:

????????也可以不指定當(dāng)前目錄桅咆,我們換一個位置:

????????這個位置就會新建一個pack文件夾:

????????我們發(fā)現(xiàn),包的出現(xiàn)有一個好處坞笙,可以讓Java的類文件(源文件)和Java的運(yùn)行文件相分離岩饼。當(dāng)對方想要拿我程序的時候,我只需要將運(yùn)行程序拷給他就可以用啦薛夜,沒必要將源文件給他籍茧。

????????接著上一步,我們運(yùn)行:

????????發(fā)現(xiàn)掛啦梯澜,當(dāng)前目錄下沒有這個類寞冯。

????????我們可以把目錄切到C盤那個目錄下,但也可以不那么做晚伙,有其他方法:

????????set classpath一下简十。注意,我們只要指定到包的父目錄即可撬腾,后面不必跟pack螟蝙,pack和PackageDemo.class是一個整體~

?? ? ? 5,包也是一種封裝形式民傻。

????08-面向?qū)ο?包與包之間訪問)

? ? ? ? 不同包中的類該如何訪問呢胰默?

????????packa包:

????????pack包:

? ? ? ? 按照我們以前的寫法场斑,是這樣創(chuàng)建DemoA的的對象并調(diào)用show方法的。?

????????試著編譯運(yùn)行牵署。

? ? ? ? 應(yīng)該先編譯DemoA(否則它還沒有漏隐,PackageDemo怎么調(diào)用呢~):

????????這一步OK啦。

????????接著編譯PackageDemo:

????????錯誤原因:類名寫錯奴迅。

????????注意青责,類名不是DemoA哦,類名的全名應(yīng)該是packa.DemoA取具。(包名.全名)

????????改一下:

????????繼續(xù)編譯:

????????還是錯啦脖隶,不過提示變了,說這個軟件包不存在暇检。

????????錯誤原因:packa包不在當(dāng)前目錄下产阱,需要設(shè)置classpath,告訴jvm去哪里找指定的packa包块仆。

????????OK~我們set classpath一下构蹬,編譯,還是錯了:

? ? ? ? 錯誤原因:有了包悔据,范圍變大庄敛,一個包中的類要被訪問,必須要有足夠大的權(quán)限科汗,所以被訪問的類要被public修飾藻烤。DemoA的權(quán)限不夠大,需要將它設(shè)置成public肛捍。

????????改成public:

????????類的修飾符只有兩種隐绵,默認(rèn)或者public。

????????改完之后重新編譯一下DemoA拙毫,然后編譯PackageDemo:

????????還是有錯依许,不過只剩一個啦。

????????錯誤原因:類公有后缀蹄,被訪問的成員也要公有才可以被訪問峭跳。

????????所以這個show方法也要用public修飾一下:

????????再依次講兩個類編譯,這次終于沒錯啦缺前,運(yùn)行:

????????成功啦蛀醉!

?????????總結(jié)一下:

?????????包與包之間進(jìn)行訪問,被訪問的包中的類以及類中的成員衅码,都需要被public修飾拯刁。

????????不過有一種特殊情況哦。

????????用例子來說明逝段。

????????packb包:

????????packa包中垛玻,我們可以用DemoA來繼承DemoB:

????????依次編譯DemoB割捅、DemoA、PackageDemo帚桩,然后運(yùn)行起來啦:

????????有趣的事情來啦亿驾,接下來,我可不可以不建立DemoA的對象账嚎,直接建立DemoB的對象呢莫瞬?

????????運(yùn)行一下,發(fā)現(xiàn)也行呢:

? ? ? ? 我們發(fā)現(xiàn)郭蕉,packa包中的類和pack包中的類區(qū)別不太大呀疼邀?它們都能訪問packb包中的類。DemoA為什么還有繼承DemoB呢恳不,沒意思了呀檩小,哼开呐!

????????#Java小劇場:

????????PackageDemo:哈哈哈哈烟勋,我不把人家叫爸爸我也可以用人家的類呢,哈哈哈哈筐付。

????????DemoA:嗚嗚嗚嗚~

????????#

????????所以卵惦,Java就給不同包中的子類提供了一個特殊權(quán)限。就是瓦戚,你認(rèn)我為父沮尿,你就能夠拿到一些別人拿不到的東西。

????????這個特殊權(quán)限就是较解。畜疾。。噔噔噔噔印衔!protected權(quán)限啡捶!

????????這個權(quán)限就是保護(hù)權(quán)限。

????????我們現(xiàn)在依然在pack包中直接訪問packb包中的DemoB奸焙,編譯運(yùn)行一下:

????????出錯啦瞎暑。

????????#Java小劇場:

????????DemoB:你必須是我鵝子我才可以叫你訪問,否則与帆。了赌。。哼玄糟!

????????PackageDemo:嗚嗚嗚嗚~

????????#

????????現(xiàn)在用親兒子來訪問它:

????????編譯運(yùn)行:

????????OK的啦勿她。

????????#Java小劇場:

????????DemoA:爸比對我最好啦!有爸比就是不一樣~

????????DemoB:么么噠( ? 3?)?

????????#

?????????總結(jié):

? ? ? ? 不同包中的子類還可以直接訪問父類中被protected權(quán)限修飾的成員阵翎。

?????????注意:包與包之間可以使用的權(quán)限只有兩種:public protected逢并。

????????接下來說一下幾種訪問權(quán)限在不同情境中的訪問情況:

????????關(guān)于覆蓋:

????????現(xiàn)在packb包中有兩 類播揪,想在PackageDemo中全部建立對象訪問:

????????怎么做呢?

????????這樣可以嗎:

????????不可以筒狠。

????????我們說猪狈,類變成公有之后,類名必須和Java文件名保持一致辩恼。

????????現(xiàn)在有兩個公有類雇庙,Java文件名到底用什么呢?

?????????注意:一個.java文件中灶伊,不能出現(xiàn)兩個及以上的公有類和接口疆前。

????????那怎么辦呢?

? ? ? ? 將這兩個類分別存在兩個.java文件中聘萨,但它們依然都是屬于packb哦:

????????分別編譯:

????????都被放在packb文件夾中啦:

竹椒,

????????搞定~

????????另外,我們這個包還可以有多層次米辐,包里面還可以有包~

????????比如:

????????編譯后:

????????注意一下目錄胸完,是不是多層的呀,最里面一個文件夾里就是DemoC.class文件啦翘贮。

????????這叫多層包目錄赊窥。這非常多見的,對類進(jìn)行逐級管理~

????09-面向?qū)ο?導(dǎo)入import)

????????還是用上面的例子:

????????現(xiàn)在想在PackageDemo中建立DemoC的對象狸页,這樣可以嗎:

????????不可以锨能。

????????應(yīng)該寫上包名:

????????但是這樣建立對象也太費(fèi)勁了叭!

????????接下來介紹一個關(guān)鍵字芍耘,是因需求而來的關(guān)鍵字哦址遇,它可以幫我們簡化類名的書寫:import(導(dǎo)入)。

????????import:導(dǎo)入的是包中的類斋竞。

????????一個例子:

????????這樣在當(dāng)前包中可以創(chuàng)建DemoA的對象倔约,這個沒有問題。那可以創(chuàng)建DemoZ的對象嗎窃页?不可以哦跺株。

????????因?yàn)閷?dǎo)入的是packb中的類,而haha是packb包中的包脖卖。

????????如果想要創(chuàng)建DemoZ對象乒省,就必須這樣導(dǎo)入:

????????一定要區(qū)分清楚哦。

????????像這種通配符*的寫法:

????????在實(shí)際開發(fā)中其實(shí)不建議用哦畦木。

????????因?yàn)橛锌赡苓@個包中有十個類袖扛,我們只需要使用其中一個類,那把這一個類導(dǎo)入就行啦。需要用到包中的哪個類蛆封,就導(dǎo)入哪個類唇礁。

????????但是這樣會不會有點(diǎn)麻煩呢?

????????不用擔(dān)心惨篱。

????????以后我們開發(fā)用的都是高級的編譯器(Eclipse之類)盏筐,不會用記事本的。在高級的編譯器中砸讳,package是不用自己寫的琢融,import也是不用自己寫的,全都是自動導(dǎo)入簿寂。

????????注意:如果導(dǎo)入了兩個包漾抬,這兩個包中有同名的類,那在調(diào)用類的時候常遂,類前面必須寫上包名哦纳令!

????????那定義包名的時候該怎么定義呢?

????????我們想想定義包的初衷是什么:方便管理克胳、避免類重名平绩。

????????所以建立定義包名不要重復(fù),可以使用url來完成定義毯欣,url是唯一的馒过。

????????像這樣:

? ? ? ? 在一個程序中臭脓,不寫import可以嗎酗钞?

????????可以的。

????????不寫import的時候来累,我們使用到其他包中的類砚作,可以按照全類名方式來寫。而import只是可以簡化類名的書寫嘹锁。

????10-面向?qū)ο?jar包)

????????Java中也有它的壓縮包葫录,這個壓縮包就是Jar包。

????????Java壓縮包需要一個jdk中的工具來完成领猾,這個工具就叫做jar.exe米同。

????????一個例子:

????????編譯運(yùn)行:

????????這是jar的一些用法:

????????創(chuàng)建packa包和pack包的壓縮包:

????????創(chuàng)建好啦:

????????這個壓縮包中有兩個包(文件夾):packa和pack。

????????我們來查看一下它里面的內(nèi)容:

????????注意:這個是jar包生成后自動生成的一個文件夾摔竿。這個文件夾里面存放了一個配置清單文件面粮,這個配置清單文件里的數(shù)據(jù)我們是可以改動的,改動完這個jar包會有一些特殊的意義继低,或者特殊的操作方式熬苍。

????????我們現(xiàn)在先不對這個進(jìn)行深入了解,在講圖形界面的時候會對它有一些涉獵。

????????現(xiàn)在我們把pack和pakca文件夾都刪掉柴底。

????????試著運(yùn)行一下婿脸,掛啦:

????????我們想一想,打壓縮包的意義就是這兩個壓縮包的父目錄變成了jar包柄驻,而不是原先的C盤的myclass狐树。

????????我們重新set classpath一下:

????????再運(yùn)行,OK啦:

????????下次拿到一個jar包鸿脓,我們只需要將jar包定義到classpath中褪迟,這樣jar包中的東西我們就都可以用啦。

????????其他的一些用法:

????????顯示詳細(xì)信息:

????????更詳細(xì)了答憔,還有時間:

????????將a.jar包中的詳細(xì)信息寫在c盤中的1.txt文件中:

????????將c盤的詳細(xì)內(nèi)容寫在c盤的2.txt文件中:

? ? ? ? 后半部分講的我覺得不是很需要味赃,所以就木有仔細(xì)聽,也有點(diǎn)繁瑣虐拓。有提到native:本地方法心俗,這種方法是調(diào)用了系統(tǒng)(當(dāng)前所用系統(tǒng),比如說Windows)蓉驹,所以看不到方法體城榛。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市态兴,隨后出現(xiàn)的幾起案子狠持,更是在濱河造成了極大的恐慌,老刑警劉巖瞻润,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件喘垂,死亡現(xiàn)場離奇詭異,居然都是意外死亡绍撞,警方通過查閱死者的電腦和手機(jī)正勒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來傻铣,“玉大人章贞,你說我怎么就攤上這事》侵蓿” “怎么了鸭限?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長两踏。 經(jīng)常有香客問我败京,道長,這世上最難降的妖魔是什么缆瓣? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任喧枷,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘隧甚。我一直安慰自己车荔,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布戚扳。 她就那樣靜靜地躺著忧便,像睡著了一般。 火紅的嫁衣襯著肌膚如雪帽借。 梳的紋絲不亂的頭發(fā)上珠增,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天,我揣著相機(jī)與錄音砍艾,去河邊找鬼蒂教。 笑死,一個胖子當(dāng)著我的面吹牛脆荷,可吹牛的內(nèi)容都是我干的凝垛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼蜓谋,長吁一口氣:“原來是場噩夢啊……” “哼梦皮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起桃焕,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤剑肯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后观堂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體让网,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年型将,在試婚紗的時候發(fā)現(xiàn)自己被綠了寂祥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡七兜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出福扬,到底是詐尸還是另有隱情腕铸,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布铛碑,位于F島的核電站狠裹,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏汽烦。R本人自食惡果不足惜涛菠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧俗冻,春花似錦礁叔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至讥蔽,卻和暖如春涣易,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背冶伞。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工新症, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人响禽。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓账劲,卻偏偏與公主長得像,于是被迫代替她去往敵國和親金抡。 傳聞我的和親對象是個殘疾皇子瀑焦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評論 2 359

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