Java基礎(chǔ)——package+權(quán)限修飾符+內(nèi)部類

package

package就是文件夾估灿,將字節(jié)碼(.class)進(jìn)行分類存放 敬察。
包的注意事項(xiàng):

  • 包的寫法:package 包名
  • package語(yǔ)句必須是程序的第一條可執(zhí)行的代碼
  • package語(yǔ)句在一個(gè)java文件中只能有一個(gè)
  • 如果沒(méi)有package茫叭,默認(rèn)表示無(wú)包名
帶包的類的編譯和運(yùn)行

編譯:在D盤下有Person_Test.java ,在D盤下打開dos命令行執(zhí)行 javac -d . Person_Test.java 命令就會(huì)生成一個(gè)D:/com/heima/Person_Test.class
運(yùn)行:在D盤下打開dos命令行(當(dāng)前路徑下,不要跑到D:/com/heima去打開dos) 執(zhí)行java com.heima.Person_Test

不同包下類之間的訪問(wèn)

1)類的全路徑名 變量名 = new 類的全路徑名();
?
案例:一個(gè)java文件里面是Demo1_Package類

    package com.heima;
        class Demo1_Package {
            public static void main(String[] args) {
                //Person p = new Person();          //報(bào)錯(cuò):不同包下的類不能直接訪問(wèn)
                com.baidu.Person p = new com.baidu.Person();    //類的全路徑名
        }
    }


    package com.baidu;
    class Person {
        String name;
        int age;
    }

2)package和class之間加入一個(gè)"import 包;"然后就可以直接訪問(wèn)不同包下的類了
?
案例:一個(gè)java文件里面是Demo2_Package類

    package com.heima;
    import com.baidu.Person;            //導(dǎo)包
    class Demo2_Package {
        public static void main(String[] args) {
            Person p = new Person();    //導(dǎo)包后道媚,就能直接訪問(wèn)了
        }
    }



    package com.baidu;
    class Person {
        String name;
        int age; 
    }

?

修飾符

權(quán)限修飾符的訪問(wèn)權(quán)限
1.png
  • private: 是為本類準(zhǔn)備的
  • 默認(rèn):是為同一個(gè)包下的類準(zhǔn)備的
  • protected:是為子類準(zhǔn)備的,無(wú)論子類在任何地方
  • public: 為所有類準(zhǔn)備的
每個(gè)內(nèi)容一般都用什么修飾符修飾
  • 類:public
  • 成員變量:private
  • 構(gòu)造方法:public (當(dāng)定義一個(gè)工具類的時(shí)候 可以用private)
  • 成員方法:public
  • 接口中的成員變量:public static final
  • 接口中的成員方法:public abstract

內(nèi)部類

類內(nèi)部的類就叫做內(nèi)部類

訪問(wèn)特點(diǎn)
  • 外部類訪問(wèn)內(nèi)部類里面的內(nèi)容 ,必須創(chuàng)建內(nèi)部類的對(duì)象來(lái)訪問(wèn)
  • 內(nèi)部類訪問(wèn)外部類的內(nèi)容最域, 直接訪問(wèn)包括私有

代碼:

    class Demo1_InnerClass {
        public static void main(String[] args) {
            //報(bào)錯(cuò)谴分,因?yàn)閮?nèi)部類是寫在其他類的內(nèi)部 不能這樣直接創(chuàng)建內(nèi)部類的對(duì)象
            //Inner i = new Inner();
            //i.method();
            //創(chuàng)建內(nèi)部類對(duì)象格式:外部類名.內(nèi)部類名 = 外部類對(duì)象.內(nèi)部類對(duì)象
            Outer.Inner oi = new Outer().new Inner();   
            oi.method();
        }
    }

    class Outer {
        private int num = 10;//外部類的私有屬性
        class Inner {
            String name = "內(nèi)部類";
            public void method() {
                System.out.println(num);//內(nèi)部類訪問(wèn)外部類的內(nèi)容, 直接訪問(wèn)包括私有
            }
        }

        public void show(){
            //System.out.println(name);//報(bào)錯(cuò):外部類不能直接訪問(wèn)內(nèi)部類的內(nèi)容
            Inner i = new Inner();
            //這樣才是正確的镀脂,外部類訪問(wèn)內(nèi)部類里面的內(nèi)容牺蹄,必須創(chuàng)建內(nèi)部類的對(duì)象來(lái)訪問(wèn)
            System.out.println(i.name);
        }
    }
成員私有內(nèi)部類
    class Demo2_InnerClass {
        public static void main(String[] args) {
            //Outer.Inner oi = new Outer().new Inner();
            //不能創(chuàng)建私有內(nèi)部類的對(duì)象,因?yàn)閮?nèi)部類被私有了 
            //oi.method();

            Outer o = new Outer();
            o.print();
        }
    }

    class Outer {
        private int num = 10;
        private class Inner {               
        //內(nèi)部類私有是為了讓內(nèi)部的這個(gè)類更安全 比如:內(nèi)部類就相當(dāng)于人類的心臟 
        //怎么能讓外面直接訪問(wèn)你的心臟呢? 
            public void method() {
                System.out.println(num);
            }
        }

        public void print() {
            Inner i = new Inner();
            i.method();
        }
    }
成員靜態(tài)內(nèi)部類
    class Demo1_InnerClass {
        public static void main(String[] args) {
            //外部類名.內(nèi)部類名 對(duì)象名 = 外部類名.內(nèi)部類對(duì)象;
            Outer.Inner oi = new Outer.Inner(); 
            oi.method();

            Outer.Inner2.print();   //直接訪問(wèn)靜態(tài)內(nèi)部類里面的靜態(tài)方法
        }
    }

    class Outer {
        static class Inner {        //靜態(tài)成員內(nèi)部類
            public void method() {
                System.out.println("method");
            }
        }

        static class Inner2 {       //靜態(tài)成員內(nèi)部類
            public static void print() {        //靜態(tài)方法
                System.out.println("print");
            }
        }
    }
內(nèi)部類對(duì)象訪問(wèn)當(dāng)前外部類對(duì)象的成員變量
class Test_InnerClass {
        public static void main(String[] args) {
            
            Outer ot = new Outer();
            ot.num = ot.num - 5;

            Outer.Inner oi = ot.new Inner();
            oi.show();
        }
    }
    class Outer {
        public int num = 10;
        class Inner {
            public int num = 20;
            public void show() {
                int num = 30;
                System.out.println(num);//訪問(wèn)的是局部變量 30
                System.out.println(this.num);//訪問(wèn)的是成員變量 20
                //外部類名.this訪問(wèn)的是當(dāng)前外部類對(duì)象的num 5
                //因?yàn)楫?dāng)前外部類對(duì)象ot的num值已經(jīng)改變成了5 ot.num=ot.num-5
                System.out.println(Outer.this.num); 
                System.out.println(new Outer().num);//一個(gè)新的外部類對(duì)象的num 10
            }
        }
    }
局部?jī)?nèi)部類訪問(wèn)局部變量薄翅,局部變量前面必須加final修飾钞馁,為了延長(zhǎng)局部變量的生命周期
class Demo1_InnerClass {
        public static void main(String[] args) {
            Outer o = new Outer();
            o.method();
        }
    }

class Outer {
    public void method() {
        final int num = 10;
        class Inner {
            public void print() {
                System.out.println(num);
            }
        }

        Inner i = new Inner();//對(duì)象的生命周期比局部變量長(zhǎng),
        i.print();  
        //當(dāng)method()方法執(zhí)行完畢后匿刮,i還存在著,就會(huì)導(dǎo)致如果i對(duì)象還想訪問(wèn)num僧凰,而
        //num已經(jīng)消失了,訪問(wèn)不到了熟丸。所以在num前面加final 永遠(yuǎn)放到常量池里面去训措,常量池的
        //東西永遠(yuǎn)都不會(huì)消失(虛擬機(jī)掛掉才會(huì)消失)
    }
}

?

匿名內(nèi)部類

前提:有一個(gè)接口或者抽象類或者普通的類
格式:

new 接口名或者抽象類名(){
    重寫方法;
};

本質(zhì):就是接口或者抽象類或者普通類的一個(gè)子類對(duì)象
代碼:

interface Inter{
    public abstract void show();
}
class Demo {
    public static void main(String[] args){
        new Inter(){
            public void show(){
                System.out.println("hehe");
            }
        }.show();
    }
}
  • 匿名內(nèi)部類可以重寫多個(gè)方法, 但是一般開發(fā)中就讓其重寫一個(gè)方法。
  • 匿名內(nèi)部類是不能向下轉(zhuǎn)型的,因?yàn)闆](méi)有子類類名光羞,所以不能使用匿名內(nèi)部類里面的特有方法绩鸣。
  • 當(dāng)我們看到一個(gè)方法的參數(shù)類型是抽象類或者接口的時(shí)候, 我們調(diào)用這個(gè)方法的時(shí)候纱兑,可以考慮用匿名內(nèi)部類來(lái)實(shí)現(xiàn)呀闻。
課后習(xí)題:補(bǔ)齊代碼,使得控制臺(tái)輸出HelloWorld
    interface Inter { 
        void show(); 
    }
    class Outer { 
    //補(bǔ)齊代碼
    }
    class OuterDemo {
        public static void main(String[] args) {
            Outer.method().show();
        }
    }

今天學(xué)習(xí)了package和導(dǎo)包(import)之后是不是覺得編譯步驟很復(fù)雜扒鄙鳌捡多?下節(jié)我們將學(xué)習(xí)用Eclipse來(lái)編譯運(yùn)行程序。想了解更多學(xué)習(xí)知識(shí)铐炫,請(qǐng)關(guān)注微信公眾號(hào)“阿Q說(shuō)”垒手,獲取更多學(xué)習(xí)資料吧!你也可以后臺(tái)留言說(shuō)出你的疑惑倒信,阿Q將會(huì)在后期的文章中為你解答科贬。每天學(xué)習(xí)一點(diǎn)點(diǎn),每天進(jìn)步一點(diǎn)點(diǎn)鳖悠。

?
?
?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末榜掌,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子乘综,更是在濱河造成了極大的恐慌憎账,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瘾带,死亡現(xiàn)場(chǎng)離奇詭異鼠哥,居然都是意外死亡熟菲,警方通過(guò)查閱死者的電腦和手機(jī)看政,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門朴恳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人允蚣,你說(shuō)我怎么就攤上這事于颖。” “怎么了嚷兔?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵森渐,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我冒晰,道長(zhǎng)同衣,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任壶运,我火速辦了婚禮耐齐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蒋情。我一直安慰自己埠况,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布棵癣。 她就那樣靜靜地躺著辕翰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪狈谊。 梳的紋絲不亂的頭發(fā)上喜命,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音河劝,去河邊找鬼渊抄。 笑死,一個(gè)胖子當(dāng)著我的面吹牛丧裁,可吹牛的內(nèi)容都是我干的护桦。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼煎娇,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼二庵!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起缓呛,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤催享,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后哟绊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體因妙,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了攀涵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铣耘。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖以故,靈堂內(nèi)的尸體忽然破棺而出蜗细,到底是詐尸還是另有隱情,我是刑警寧澤怒详,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布炉媒,位于F島的核電站,受9級(jí)特大地震影響昆烁,放射性物質(zhì)發(fā)生泄漏吊骤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一静尼、第九天 我趴在偏房一處隱蔽的房頂上張望白粉。 院中可真熱鬧,春花似錦茅郎、人聲如沸蜗元。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)奕扣。三九已至,卻和暖如春掌敬,著一層夾襖步出監(jiān)牢的瞬間惯豆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工奔害, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留楷兽,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓华临,卻偏偏與公主長(zhǎng)得像芯杀,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子雅潭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

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

  • 整理來(lái)自互聯(lián)網(wǎng) 1揭厚,JDK:Java Development Kit,java的開發(fā)和運(yùn)行環(huán)境扶供,java的開發(fā)工具...
    Ncompass閱讀 1,537評(píng)論 0 6
  • 一:java概述:1筛圆,JDK:Java Development Kit,java的開發(fā)和運(yùn)行環(huán)境椿浓,java的開發(fā)工...
    ZaneInTheSun閱讀 2,635評(píng)論 0 11
  • 一:java概述: 1太援,JDK:Java Development Kit闽晦,java的開發(fā)和運(yùn)行環(huán)境,java的開發(fā)...
    慕容小偉閱讀 1,774評(píng)論 0 10
  • 我沒(méi)有我 我是無(wú)數(shù)個(gè)你 拼湊成的我 我將帶著你的碎物 你的靈魂一角 死去 本質(zhì)是泥土 生殖力驅(qū)趕我 承受 包孕你撒...
    Echoshadow閱讀 315評(píng)論 2 4
  • 摘要 HashMap是程序猿使用頻率最高的用于映射(鍵值對(duì))的數(shù)據(jù)類型提岔。JDK1.8對(duì)HashMap進(jìn)行了優(yōu)化仙蛉,例...
    一凡呀閱讀 727評(píng)論 0 2