十七、內(nèi)部類

一笨觅、內(nèi)部類概念

什么是內(nèi)部類
將類寫在其他類的內(nèi)部拦耐,可以寫在其他類的成員位置和局部位置,這時(shí)寫在其他類內(nèi)部的類就稱為內(nèi)部類见剩。其他類也稱為外部類杀糯。
什么時(shí)候使用內(nèi)部類
在描述事物時(shí),若一個(gè)事物內(nèi)部還包含其他可能包含的事物炮温,比如在描述汽車時(shí)火脉,汽車中還包含這發(fā)動(dòng)機(jī),這時(shí)發(fā)動(dòng)機(jī)就可以使用內(nèi)部類來(lái)描述柒啤。

class 汽車 { //外部類
    class 發(fā)動(dòng)機(jī) { //內(nèi)部類
}
}

內(nèi)部類的分類
內(nèi)部類分為成員內(nèi)部類與局部?jī)?nèi)部類倦挂。
我們定義內(nèi)部類時(shí),就是一個(gè)正常定義類的過(guò)程担巩,同樣包含各種修飾符方援、繼承與實(shí)現(xiàn)關(guān)系等。
在內(nèi)部類中可以直接訪問(wèn)外部類的所有成員涛癌。

二犯戏、成員內(nèi)部類

成員內(nèi)部類,定義在外部類中的成員位置拳话。與類中的成員變量相似先匪,可通過(guò)外部類對(duì)象進(jìn)行訪問(wèn)。
定義格式:
class 外部類 {
修飾符 class 內(nèi)部類 {
//其他代碼
}
}

訪問(wèn)方式:
外部類名.內(nèi)部類名 變量名 = new 外部類名().new 內(nèi)部類名();

成員內(nèi)部類代碼演示
定義類

class Body {//外部類弃衍,身體
    private boolean life= true; //生命狀態(tài)
     public class Heart { //內(nèi)部類呀非,心臟
    public void jump() {
         System.out.println("心臟噗通噗通的跳")
            System.out.println("生命狀態(tài)" + life); //訪問(wèn)外部類成員變量
}
}
}

訪問(wèn)內(nèi)部類

public static void main(String[] args) {
    //創(chuàng)建內(nèi)部類對(duì)象
    Body.Heart bh = new Body().new Heart();
    //調(diào)用內(nèi)部類中的方法
    bh.jump();
}


三、局部?jī)?nèi)部類

局部?jī)?nèi)部類镜盯,定義在外部類方法中的局部位置岸裙。與訪問(wèn)方法中的局部變量相似,可通過(guò)調(diào)用方法進(jìn)行訪問(wèn)速缆。
定義格式:

class 外部類 { 
    修飾符 返回值類型 方法名(參數(shù)) {
class 內(nèi)部類 {
//其他代碼
}
}
}

訪問(wèn)方式: 在外部類方法中降允,創(chuàng)建內(nèi)部類對(duì)象,進(jìn)行訪問(wèn)
局部?jī)?nèi)部類代碼演示
定義類

class Party {//外部類艺糜,聚會(huì)
    public void puffBall(){// 吹氣球方法
        class Ball {// 內(nèi)部類剧董,氣球
              public void puff(){
     System.out.println("氣球膨脹了");
}
}
//創(chuàng)建內(nèi)部類對(duì)象幢尚,調(diào)用puff方法
new Ball().puff();
}
}

訪問(wèn)內(nèi)部類

public static void main(String[] args) {
    //創(chuàng)建外部類對(duì)象
    Party p = new Party();
    //調(diào)用外部類中的puffBall方法
    p.puffBall();
}


四、匿名內(nèi)部類

匿名內(nèi)部類局部?jī)?nèi)部類的一種送滞,定義的匿名內(nèi)部類有兩個(gè)含義:
? 臨時(shí)定義某一指定類型的子類
? 定義后即刻創(chuàng)建剛剛定義的這個(gè)子類的對(duì)象
作用:匿名內(nèi)部類是創(chuàng)建某個(gè)類型子類對(duì)象的快捷方式侠草。
使用匿名內(nèi)部類的方式辱挥,可以將定義子類與創(chuàng)建子類對(duì)象兩個(gè)步驟由一個(gè)格式一次完成犁嗅。雖然是兩個(gè)步驟,但是兩個(gè)步驟是連在一起完成的晤碘。
格式:

new 父類或接口(){
    //進(jìn)行方法重寫
};

? 代碼演示

//已經(jīng)存在的父類:
public abstract class Person {
    public abstract void eat();
 }

1. 使用匿名內(nèi)部類定義并創(chuàng)建該父類的子類對(duì)象褂微,并用多態(tài)的方式賦值給父類引用變量

 class Test {

     public static void main(String[] args) {

         //定義并創(chuàng)建該父類的子類對(duì)象,并用多態(tài)的方式賦值給父類引用變量
         Person p = new Person() {
             public void eat() {
                 System.out.println("我吃了");
             }
         };

         //調(diào)用eat方法
         p.eat();

     }
 }

2. 匿名內(nèi)部類如果不定義變量引用园爷,則屬于匿名對(duì)象

 class Test {

     public static void main(String[] args) {

         //定義并創(chuàng)建該父類的子類對(duì)象宠蚂,并用多態(tài)的方式賦值給父類引用變量
        new Person() {
             public void eat() {
                 System.out.println("我吃了");
             }
         }.eat();

     }
 }

五、內(nèi)部類細(xì)節(jié)總結(jié)

內(nèi)部類總結(jié)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末童社,一起剝皮案震驚了整個(gè)濱河市求厕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌扰楼,老刑警劉巖呀癣,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異弦赖,居然都是意外死亡项栏,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門蹬竖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)沼沈,“玉大人,你說(shuō)我怎么就攤上這事币厕×辛恚” “怎么了?”我有些...
    開封第一講書人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵旦装,是天一觀的道長(zhǎng)页衙。 經(jīng)常有香客問(wèn)我,道長(zhǎng)同辣,這世上最難降的妖魔是什么拷姿? 我笑而不...
    開封第一講書人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮旱函,結(jié)果婚禮上响巢,老公的妹妹穿的比我還像新娘。我一直安慰自己棒妨,他們只是感情好踪古,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開白布含长。 她就那樣靜靜地躺著,像睡著了一般伏穆。 火紅的嫁衣襯著肌膚如雪拘泞。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,842評(píng)論 1 290
  • 那天枕扫,我揣著相機(jī)與錄音陪腌,去河邊找鬼。 笑死烟瞧,一個(gè)胖子當(dāng)著我的面吹牛诗鸭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播参滴,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼强岸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了砾赔?” 一聲冷哼從身側(cè)響起蝌箍,我...
    開封第一講書人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎暴心,沒(méi)想到半個(gè)月后妓盲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡酷勺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年本橙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片脆诉。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡甚亭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出击胜,到底是詐尸還是另有隱情亏狰,我是刑警寧澤,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布偶摔,位于F島的核電站暇唾,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏辰斋。R本人自食惡果不足惜策州,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望宫仗。 院中可真熱鬧够挂,春花似錦、人聲如沸藕夫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至办悟,卻和暖如春尘奏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背病蛉。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工炫加, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人铡恕。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓琢感,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親探熔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

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