淺談Java內(nèi)部類

如果文章對(duì)你有所幫助尖奔,請(qǐng)點(diǎn)喜歡并關(guān)注鹊杖,這將是我最大的動(dòng)力商膊,謝謝

  • 為什么要有內(nèi)部類

1.內(nèi)部類是為了更好的封裝饶囚,把內(nèi)部類封裝在外部類里帕翻,不允許同包其他類訪問
2.內(nèi)部類中的屬性和方法即使是外部類也不能直接訪問
3.相反內(nèi)部類可以直接訪問外部類的屬性和方法,即使private
4.利于回調(diào)函數(shù)的編寫萝风。 PS:回調(diào)函數(shù)是函數(shù)的迭代
5.當(dāng)描述事物嘀掸,如身體里的大腦時(shí),大腦在身體內(nèi)部规惰,可以通過內(nèi)部類直觀描述

  • 內(nèi)部類特點(diǎn)

1.內(nèi)部類對(duì)象不僅指向該內(nèi)部類睬塌,還指向?qū)嵗搩?nèi)部類的外部類對(duì)象的內(nèi)存。

zz.png

2.內(nèi)部類和普通類一樣可以重寫Object類的方法,如toString方法揩晴;并且有構(gòu)造函數(shù)勋陪,執(zhí)行順序依舊是先初始化屬性,再執(zhí)行構(gòu)造函數(shù)
3.在編譯完之后硫兰,會(huì)出現(xiàn)(外部類.class)和(外部類﹩內(nèi)部類.class)兩個(gè)類文件名诅愚。
4.內(nèi)部類可以被修飾為private,只能被外部類所訪問劫映。事實(shí)上一般也都是如此書寫违孝。
5.內(nèi)部類可以被寫在外部類的任意位置,如成員位置泳赋,方法內(nèi)雌桑。

  • 內(nèi)部類對(duì)象的建立

1在同包其他類 以及main方法中(前提要內(nèi)部類沒有被修飾成private,所以一般不采用)

1)先創(chuàng)建外部類對(duì)象祖今,再通過外部類對(duì)象創(chuàng)建內(nèi)部類
Out outer = new Out();
Out.In inner = outer.new In(); //第一個(gè)Out是為了說明該內(nèi)部類到底屬于哪個(gè)外部類
2)通過匿名外部類創(chuàng)建內(nèi)部類
Out.In inner = new Out().new In();

2在外部類里

可直接創(chuàng)建對(duì)象校坑,如 In inner = new In(); 或者直接new In();

  • 內(nèi)部類的訪問

1.靜態(tài)時(shí),靜態(tài)內(nèi)部類只能訪問外部類靜態(tài)成員;非靜態(tài)內(nèi)部類都可以直接訪問千诬。(原因是:內(nèi)部類有一個(gè)外部類名.this的指引)當(dāng)訪問外部類靜態(tài)成員出現(xiàn)重名時(shí)耍目,通過(外部類名.靜態(tài)成員變量名)訪問。如大渤,Out.show();
2.重名情況下制妄,非靜態(tài)時(shí),內(nèi)部類訪問自己內(nèi)部類通過this.變量名泵三。訪問外部類通過(外部類名.this.變量名)訪問 耕捞。如Out.this.show();
3.在沒有重名的情況下,無論靜態(tài)非靜態(tài)烫幕,內(nèi)部類直接通過變量名訪問外部成員變量俺抽。

  • 外部類的訪問

1.內(nèi)部類為非靜態(tài)時(shí)遵绰,外部類訪問內(nèi)部類恩商,必須建立內(nèi)部類對(duì)象。建立對(duì)象方法毅糟,如前所述捷犹。
2.1 內(nèi)部類為靜態(tài)時(shí)弛饭,** 外部類訪問非靜態(tài)成員,通過(外部類對(duì)象名.內(nèi)部類名.方法名)訪問萍歉,如new Out().In.function();
2.2 內(nèi)部類為靜態(tài)時(shí)侣颂,
外部類訪問靜態(tài)成員時(shí),直接通過(外部類名.內(nèi)部類名.方法名)**
枪孩,如 Out.In.funchtion();
PS:當(dāng)內(nèi)部類中定義了靜態(tài)成員時(shí)憔晒,內(nèi)部類必須是靜態(tài)的藻肄;當(dāng)外部靜態(tài)方法訪問內(nèi)部類時(shí),內(nèi)部類也必須是靜態(tài)的才能訪問拒担。

  • 內(nèi)部類分類

  • 1成員內(nèi)部類

也是最常規(guī)的內(nèi)部類嘹屯。該內(nèi)部類相當(dāng)于位于外部類的成員的位置。該內(nèi)部類可以訪問外部類的所有成員和方法从撼,即使是private.

  • 2靜態(tài)內(nèi)部類

1)該類被修飾為static州弟。同時(shí)作為靜態(tài)內(nèi)部類,他不能訪問外部類非靜態(tài)的成員或方法低零。
2)訪問方式如上所述呆馁。
3)一般書寫靜態(tài)類時(shí),不涉及成員變量毁兆。

  • 3方法內(nèi)部類

類被創(chuàng)建在外部類方法中
1)可以訪問外部類中的成員
2)不能被static private 修飾,因?yàn)樗辉偈浅蓡T位置阴挣,只有成員才能被修飾為static...
3)因此內(nèi)部類不能有靜態(tài)成員
4)內(nèi)部類要訪問外部方法中的局部變量時(shí)气堕,該局部變量需要被修飾成final。

  • 4匿名內(nèi)部類

1)就是一個(gè)內(nèi)部類的簡化版
2)定義匿名內(nèi)部類的前提是畔咧,該類必須繼承一個(gè)外部類或者實(shí)現(xiàn)接口茎芭。
具體實(shí)現(xiàn)如下圖
這是一個(gè)繼承類的正常版,一共分為這幾步


1.png

通過匿名內(nèi)部類將一步到位實(shí)現(xiàn)該操作

2.png

PS:因?yàn)閮?nèi)部類是匿名的誓沸,也就是沒有名字梅桩,所以該類一次只能調(diào)用一個(gè)方法,通常在寫程序時(shí)也是如此拜隧,這也正是他優(yōu)點(diǎn)宿百,在只寫一個(gè)內(nèi)部類調(diào)用方法時(shí),他可以使整個(gè)代碼看上去很簡潔洪添。
2015.8.26更新
匿名內(nèi)部類在Swing的消息機(jī)制中廣泛使用垦页,具體看例子
Swing

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市干奢,隨后出現(xiàn)的幾起案子痊焊,更是在濱河造成了極大的恐慌,老刑警劉巖忿峻,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件薄啥,死亡現(xiàn)場離奇詭異,居然都是意外死亡逛尚,警方通過查閱死者的電腦和手機(jī)垄惧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來黑低,“玉大人赘艳,你說我怎么就攤上這事酌毡。” “怎么了蕾管?”我有些...
    開封第一講書人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵枷踏,是天一觀的道長。 經(jīng)常有香客問我掰曾,道長旭蠕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任旷坦,我火速辦了婚禮掏熬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘秒梅。我一直安慰自己旗芬,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開白布捆蜀。 她就那樣靜靜地躺著疮丛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪辆它。 梳的紋絲不亂的頭發(fā)上誊薄,一...
    開封第一講書人閱讀 52,696評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音锰茉,去河邊找鬼呢蔫。 笑死,一個(gè)胖子當(dāng)著我的面吹牛飒筑,可吹牛的內(nèi)容都是我干的片吊。 我是一名探鬼主播,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼协屡,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼定鸟!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起著瓶,我...
    開封第一講書人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤联予,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后材原,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沸久,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年余蟹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了卷胯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡威酒,死狀恐怖窑睁,靈堂內(nèi)的尸體忽然破棺而出挺峡,到底是詐尸還是另有隱情,我是刑警寧澤担钮,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布橱赠,位于F島的核電站,受9級(jí)特大地震影響箫津,放射性物質(zhì)發(fā)生泄漏狭姨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一苏遥、第九天 我趴在偏房一處隱蔽的房頂上張望饼拍。 院中可真熱鬧,春花似錦田炭、人聲如沸师抄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽司澎。三九已至,卻和暖如春栋豫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背谚殊。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來泰國打工丧鸯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人嫩絮。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓丛肢,卻偏偏與公主長得像,于是被迫代替她去往敵國和親剿干。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蜂怎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

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

  • Java 內(nèi)部類 分四種:成員內(nèi)部類、局部內(nèi)部類置尔、靜態(tài)內(nèi)部類和匿名內(nèi)部類杠步。 1、成員內(nèi)部類: 即作為外部類的一個(gè)成...
    ikaroskun閱讀 1,239評(píng)論 0 13
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法榜轿,類相關(guān)的語法幽歼,內(nèi)部類的語法,繼承相關(guān)的語法谬盐,異常的語法甸私,線程的語...
    子非魚_t_閱讀 31,665評(píng)論 18 399
  • 局部內(nèi)部類 局部內(nèi)部類是內(nèi)部類的第二種形式,它讓內(nèi)部類的“隱藏”得更深一層——寫在外部類的方法內(nèi)部飞傀,而不是處于和外...
    java部落閱讀 410評(píng)論 0 2
  • 正文 前言說到j(luò)ava內(nèi)部類皇型,想必大家首先會(huì)想到比較常用的“匿名內(nèi)部類”诬烹,但實(shí)際上,這只是內(nèi)部類的其中一種使用方式...
    java部落閱讀 479評(píng)論 0 6
  • 2017年2月6號(hào)弃鸦,北京分院的郭安鳳院長組織了北京加盟商伙伴的首次聚會(huì)绞吁,大家一起共享美味的午餐,暢想2017寡键,一起...
    王小紅_家庭教育閱讀 676評(píng)論 0 1