包及訪問權(quán)限

包是一個(gè)文件夾散休,它是類的一種特殊性質(zhì)单鹿,可以更合理的管理大量的類文件馏予,設(shè)置他人對(duì)類成員的訪問權(quán)等天梧。
在Java開發(fā)大型項(xiàng)目時(shí),通常要把類分門別類地存到文件夾里霞丧,在將這些文件夾一起編譯執(zhí)行呢岗,這樣的程序代碼更易于維護(hù)。同時(shí)將類分割開后蛹尝,對(duì)于類的使用也就有了相應(yīng)的訪問權(quán)限后豫。


包(package)的基本概念
當(dāng)一個(gè)大型程序由多個(gè)不同的組別或人員共同開發(fā)時(shí),不可能保證每個(gè)人寫的類名稱是完全不同的突那,這樣一來就可能出現(xiàn)同文件覆蓋的問題挫酿。那么為了解決這樣的麻煩確保程序可以正常運(yùn)行,就必須通過使用package關(guān)鍵字來幫忙愕难。所謂的包(package)指的就是一個(gè)文件夾早龟,即在不同的文件夾之中可以保存同名的類文件。
包的使用方法:在類或接口當(dāng)然最上面一行加上package的聲明猫缭。通常包全部用小寫字母命名葱弟。
package package 名稱[.package 名稱2.package 名稱3…];

程序中如果有package語句,該語句一定是源文件中第一條可執(zhí)行語句猜丹,它的前面只能有注釋或空行芝加。另外一個(gè)文件中最多只能有一條package語句。
經(jīng)過package的聲明之后居触,同一文件內(nèi)的接口或類就都會(huì)被保存在相同的package中妖混。
包的名字有層次關(guān)系老赤,各層以點(diǎn)分隔轮洋。包層次必須與Java開發(fā)系統(tǒng)的文件系統(tǒng)結(jié)構(gòu)相同。
若包聲明如下:package java.awt.a抬旺,則文件中的接口和類都存放在…java\awt\a目錄下弊予。

package的使用
package demo.java;   //聲明package,相當(dāng)于將Perso類和TestPerson1類放入demo\java文件夾之下
class Person
{
    public String talk()
    {
        return"Person>>>>talk()";
    }
}
class TestPackage1
{
    public static void main(String args[])
    {
        System.out.println(new Person().talk());
    }
}

包的導(dǎo)入
使用包可以將功能相似的若干類保存在一個(gè)文件目錄之中开财,但這樣一來就有可能出現(xiàn)包之間的互相訪問問題汉柒,當(dāng)一個(gè)程序需要其他包中類的時(shí)候可以通過import完成導(dǎo)入操作。package導(dǎo)入方法如下
import package 名稱.類名稱;
若某個(gè)類需要被訪問時(shí)责鳍,則必須把這個(gè)類公開出來碾褂,即此類必須聲明public。通過import命令历葛,可將某個(gè)package內(nèi)的整個(gè)類導(dǎo)入正塌,后續(xù)程序可直接使用類名稱嘀略,而不用再寫上被訪問的package的名稱。

若在不同的package中存在相同類名的public類乓诽,若要訪問某個(gè)public類的成員時(shí)帜羊,
在程序代碼內(nèi)必須明確指明“被訪問package的名稱.類名稱”。

包的導(dǎo)入使用范例

package demo.java.a;
public class Person
{
public String talk()  //類中的方法
{
return "Person>>>talk()";
}
}
//聲明一個(gè)demo.java.b包 并調(diào)用demo.java.a中的類方法
package demo.java.b;
import demo.java.a.Peraon;
//將demo.java.a包中的Person類導(dǎo)入此包中
class TestPerson2
{
    public static void main(String args[])
    {
        //調(diào)用demo.java.a中的方法并輸出
        System.out.println(new Person().talk());
    }
}
第一句聲明一個(gè)demo.java.b包將TestPerson2類放入此包中鸠天。
第二句使用import語句讼育,將demo.java.a包中的Person類導(dǎo)入到此包中。
最后一句調(diào)用demo.java.a包中的Person類中的talk()方法稠集。

提示:如果一個(gè)項(xiàng)目中有幾百個(gè)類時(shí)奶段,為了方便導(dǎo)入可以使用“包.”的形式完成。雖然使用的是“包.”剥纷,但實(shí)際上并不表示此包之中所有類都會(huì)被導(dǎo)入忧饭,導(dǎo)入的時(shí)候也只是導(dǎo)入所需要的類,不需要的類是不會(huì)有任何加載的筷畦,所以分開導(dǎo)入和使用“*”導(dǎo)入從性能上講是完全一樣的词裤。

上面程序也可以寫成如下形式:

package demo.java.b;
class TestPerson3
{
public static void main(String args[])
{
//在程序中將寫出所用類的具體位置
System.out.println(new demo.java.a.Person().talk());
}
}
程序中沒有使用import語句,但是使用Person類
的時(shí)候使用了“包名.類名”的方式鳖宾,所以在程序中也可以使用此方法來使用
非本類所在包中的類吼砂。
很多時(shí)候有可能在程序開發(fā)之中導(dǎo)入的包里面有同名的類,則這個(gè)時(shí)候再使用類的話就
必須寫上類的完整名稱“包名.類名”才可以正確操作鼎文。

JDK中常見的包

包名 描述
java.lang java.lang包含一些java語言的核心類渔肩,如String,Math拇惋,Integer周偎,System和Thread,提供常用功能撑帖。在java.lang包中還有一個(gè)子包:java.lang.reflect蓉坎,用于實(shí)現(xiàn)java類的反射機(jī)制(Java1.2以后所有版本中java.lang這個(gè)包會(huì)自動(dòng)導(dǎo)入,對(duì)于其中的類胡嘿,不需要使用import語句來導(dǎo)入蛉艾,如System類)。
java.awt java.awt包含構(gòu)成抽象窗口工具集(abstract window toolkits)的多個(gè)類衷敌,這些類被用來構(gòu)建和管理應(yīng)用程序的圖形用戶界面(GUI)勿侯。
avax.swing avax.swing此包用于建立圖形用戶界面,包含的組件相對(duì)于java.awt包而言是輕量級(jí)組件缴罗。
java.applet java.applet包含applet運(yùn)行所需要的一些類助琐。可以實(shí)現(xiàn)圖形繪制面氓、字體和顏色控制兵钮、動(dòng)畫和聲音的插入沟堡、人機(jī)交互及網(wǎng)絡(luò)交流等功能.Apple還提供各種名為抽象窗口工具箱
java.net java.net包含執(zhí)行與網(wǎng)絡(luò)相關(guān)的操作的類。
java.io java.io包含能提供多種輸入/輸出功能的類矢空。
java.util java.util包含一些實(shí)用工具類航罗,如定義系統(tǒng)特性與日期日歷相關(guān)的方法。

導(dǎo)入一個(gè)Applet程序所需要的包

package demo.java;    //聲明包demo.java
import java.applet.*;   //導(dǎo)入java.applet中所有包
import java.awt.*;     //導(dǎo)入java.awt中所有包
 public class MyApplet extends Applet   //聲明一個(gè)MyApplet類繼承Applet類屁药。
{
    public void paint(Graphics g)
    {
        g.drawString("世界粥血,你好!",30,30);   //輸出一行字酿箭,調(diào)用Java中自帶的方法在圖形化窗口輸出一行字
        g.drawLine(50,50,100,100);  //畫一條線复亏,調(diào)用Java中自帶的方法在圖形化窗口輸出一條線段
    }
}
第2,3行導(dǎo)入實(shí)現(xiàn)小窗口應(yīng)用程序的包缭嫡。

Applet程序必須繼承一個(gè)Applet類缔御,Java是單繼承局限,所以此程序不會(huì)在用了妇蛀。Applet程序和Application程序有一個(gè)最大區(qū)別:Applet不是依靠主方法運(yùn)行耕突,而Application是依靠主方法運(yùn)行的,Applet已經(jīng)成為了一個(gè)過去评架。

類成員的訪問控制權(quán)限
Java中四種訪問控制權(quán)限眷茁,privatedefault纵诞,protected上祈,public
private:如果一個(gè)成員方法或成員變量名前使用private訪問控制符浙芙,那么這個(gè)成員只能在這個(gè)類內(nèi)部使用登刺。
default:如果一個(gè)成員方法或成員變量名前沒有使用任何訪問控制符,那么這個(gè)成員擁有的是默認(rèn)的(default)訪問控制符嗡呼。默認(rèn)的訪問控制成員可以被這個(gè)包中的其他類訪問纸俭。如果一個(gè)子類與其父類位于不同包中,子類也不能訪問父類中的默認(rèn)訪問控制成員晤锥。
protected:如果一個(gè)成員方法或成員變量名前使用protected訪問控制符掉蔬,那么這個(gè)成員既可以被同一個(gè)包中的其他類訪問,也可以被不同包中的子類訪問矾瘾。
public:如果一個(gè)成員方法或成員變量名前使用了public訪問控制符,那么這個(gè)成員可以被所有的類訪問箭启,不管類與被訪問類是否在同一個(gè)包中壕翩。

權(quán)限 private default protected public
同一類
同一包中的類
不同包的子類
其他包中的類

類成員的訪問控制權(quán)限使用范例

范例1
package demo.java.b;
import demo.java.a.*; //通過導(dǎo)入demo.java.a.*;而導(dǎo)入所需要的Person類
public class Student extends Person
{
public Student(String name)
{
this.name=name;   //Stude類訪問Person類中的name屬性
}
public String talk()
{
return "Person>>talk(),"+this.name;
}
}

范例

package demo.java.c;
import demo.java.b.*;
class TestPackage
{
public static void main(String args[])
Student s=new Student("javafans");
s.name="javafans";  //通過對(duì)象調(diào)用受保護(hù)的屬性
System.out.println(s.talk());
}
}

Java命名規(guī)范
JDK中類的聲明傅寡,方法的聲明放妈,常量的聲明有一定規(guī)律
1北救,包名中的字母一律小寫,如demo.java芜抒。
2珍策,類名、接口名應(yīng)當(dāng)使用名詞宅倒,每個(gè)單詞首字母大寫攘宙。如TestPerson。
3拐迁,變量名(屬性名)第一個(gè)單詞小寫蹭劈,后面單詞的首字母大寫。如newLxh线召。
4铺韧,方法名的第一個(gè)單詞小寫,后面每個(gè)單詞大寫缓淹,如talkMySelf()哈打。
5,常量名中的每個(gè)字母一律大寫讯壶,如COUNTRY前酿。


打包工具>>>jar命令的使用
jar文件即java archive file的縮寫,其應(yīng)用與Java息息相關(guān)鹏溯。jar文件就是一種壓縮文件罢维,與常見的ZIP壓縮文件格式兼容,習(xí)慣上稱之為jar包丙挽。如果開發(fā)者開發(fā)了許多類肺孵,當(dāng)需要把這些類提供給用戶時(shí),通常都會(huì)將這些類壓縮到j(luò)ar文件中颜阐,以jar包的方式提供給用戶使用平窘。只要?jiǎng)e人的classpath環(huán)境變量的設(shè)置中包含這個(gè)jar文件,Java虛擬機(jī)就能自動(dòng)在內(nèi)存中解壓這個(gè)jar文件凳怨,把這個(gè)jar文件當(dāng)做一個(gè)目錄瑰艘,在這個(gè)jar文件中去尋找所需要的類名及包名所對(duì)應(yīng)的目錄結(jié)構(gòu)。
jar命令是Java中提供的一個(gè)非常有用的一個(gè)命令肤舞,可以用來對(duì)大量的類(.class文件)進(jìn)行壓縮紫新,然后存為.jar文件。jar壓縮文件可以方便管理大量的類文件李剖,芒率,進(jìn)行壓縮也減少了文件所占的空間。

只要在命令行中使用以下命令就可以將一個(gè)包打成一個(gè)jar文件篙顺。
jar-cvf create.jar demo

-c:創(chuàng)建新的存檔
-v:生成詳細(xì)輸出到標(biāo)準(zhǔn)輸出上偶芍。
-f:指定存檔文件名充择。
create.jar:是生成jar文件的名稱。
demo:要打成jar文件的包


單例設(shè)計(jì)模式

package demo.java.b
class Singleton
{
private static Singleton inst=new Singleton();   //實(shí)例化對(duì)象
private Singleton(){}  //此時(shí)類中不會(huì)再生成無參的什么都不做的構(gòu)造
public static Singleton getInst()
{
return inst;
}
public void print()
{
System.out.println("HelloWorld");
}
}
class Test1
{
public static void main(String args[])
{
Singleton inst=null;   /聲明對(duì)象
inst=Singleton.getainst();
inst.print();
}
}

如果想要產(chǎn)生類的實(shí)例化對(duì)象匪蟀,那么一定要調(diào)用構(gòu)造方法椎麦,如果把一個(gè)類的構(gòu)造方法卡死了,那么就表示外部無法調(diào)用此構(gòu)造材彪,就意味著外部無法產(chǎn)生實(shí)例化對(duì)象观挎。同時(shí)在類內(nèi)部定義的本類實(shí)例化對(duì)象使用的是static定義,static特點(diǎn)是在全局?jǐn)?shù)據(jù)區(qū)之中保存查刻,是一個(gè)公共屬性键兜。那么不管外部聲明多少個(gè)對(duì)象實(shí)際上只是取得了唯一的一個(gè)實(shí)例化對(duì)象。這樣的設(shè)計(jì)模式稱之為單例設(shè)計(jì)模式穗泵。


多例設(shè)計(jì)模式
多例設(shè)計(jì)模式指的是一個(gè)類可以定義指定多個(gè)對(duì)象普气,不管是單例還是多例,構(gòu)造方法都不可以使用public定義佃延。

public demo.java.d;
classSex  //性別
{
private String title;  //保存信息
private static final Sex MALE=new Sex("男");
private static final Sen FEMALE=new Sen("女");
private Sex(String title)
{
this.title=title;
}
public static Sex getInst(int ch)
{
switch(ch)
{
case 0:
return MALE;
case 1:
return FEMALE;
default:
return null;
}
}
public String toString()
{
return this.title;
}
}
public class Test
{
public static void main(String args[])
{
System.out.println(Sex.getInst(0));
}
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末现诀,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子履肃,更是在濱河造成了極大的恐慌仔沿,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尺棋,死亡現(xiàn)場(chǎng)離奇詭異封锉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)膘螟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門成福,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人荆残,你說我怎么就攤上這事奴艾。” “怎么了内斯?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵蕴潦,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我俘闯,道長(zhǎng)潭苞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任备徐,我火速辦了婚禮萄传,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蜜猾。我一直安慰自己秀菱,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布蹭睡。 她就那樣靜靜地躺著衍菱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪肩豁。 梳的紋絲不亂的頭發(fā)上脊串,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音清钥,去河邊找鬼琼锋。 笑死,一個(gè)胖子當(dāng)著我的面吹牛祟昭,可吹牛的內(nèi)容都是我干的缕坎。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼篡悟,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼谜叹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起搬葬,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤荷腊,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后急凰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體女仰,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年抡锈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了疾忍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡企孩,死狀恐怖锭碳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情勿璃,我是刑警寧澤擒抛,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站补疑,受9級(jí)特大地震影響歧沪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜莲组,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一诊胞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦撵孤、人聲如沸迈着。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽裕菠。三九已至,卻和暖如春闭专,著一層夾襖步出監(jiān)牢的瞬間奴潘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工影钉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留画髓,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓平委,卻偏偏與公主長(zhǎng)得像奈虾,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子肆汹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理愚墓,服務(wù)發(fā)現(xiàn),斷路器昂勉,智...
    卡卡羅2017閱讀 134,654評(píng)論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,809評(píng)論 6 342
  • 今天浪册,朋友圈被楊絳先生去世的消息刷屏了,我方驚訝于我屌絲環(huán)繞的周遭岗照,盡還有那么多深藏的知識(shí)分子村象。這些年,我除了專業(yè)...
    再續(xù)朝圣路閱讀 378評(píng)論 0 1
  • 認(rèn)識(shí)朋友小A的時(shí)候,他已經(jīng)從導(dǎo)游成功轉(zhuǎn)型當(dāng)了旅游達(dá)人了迫吐。每天滿世界飛來飛去库菲,免費(fèi)住各種豪華的酒店,吃各類精致的美食...
    未末小七閱讀 890評(píng)論 0 2
  • 多少人生 如同是在一個(gè)軌道上 還沒有進(jìn)入軌道 就已經(jīng)知道軌道那頭的結(jié)果 單行的軌道 非要不偏不倚 必須沿著軌跡 一...
    順山先生閱讀 251評(píng)論 3 7