內(nèi)部類在開發(fā)中不是首要選擇,但是一定會(huì)出現(xiàn),現(xiàn)在先學(xué)習(xí)語法和使用;
一、內(nèi)部類的基本概念
所謂的內(nèi)部類指的是在一個(gè)類的內(nèi)部繼續(xù)定義類的結(jié)構(gòu)所形成的代碼形式
范例1:
內(nèi)部類訪問外部類
范例2:
外部類訪問內(nèi)部類
在定義內(nèi)部類時(shí)會(huì)發(fā)現(xiàn)問題:類的組成結(jié)構(gòu)為屬性和方法兩個(gè)部分,但是現(xiàn)在有多處一個(gè)類。
結(jié)論:
內(nèi)部類的缺點(diǎn):破壞了程序的結(jié)構(gòu)。
內(nèi)部類的優(yōu)點(diǎn):內(nèi)部類可以方便的訪問外部類之中定義的私有成員;同理外部類也可以方便 的訪問內(nèi)部類的私有成員
范例3:
升級(jí)范例1,內(nèi)部類訪問外部類的私有屬性
從訪問屬性的角度上講,只要訪問類之中的屬性一定要加上“this”。在內(nèi)部類訪問外部類msg屬性時(shí),應(yīng)加上“this”才算合理;但是卻無法編譯通過,因?yàn)闊o法找到上下文;直接使用“this.屬性”表示的是Inner類的屬性明顯錯(cuò)誤,應(yīng)該使用“外部類.this.屬性”才表示內(nèi)部類訪問外部類的私有屬性;
范例4:
由外部操作內(nèi)部類
內(nèi)部類可以通過主方法直接使用,這時(shí)使用的語法如下:
外部類 .內(nèi)部類 內(nèi)部類對(duì)象= new 外部類(). new內(nèi)部類();
原因:先實(shí)例化外部類對(duì)象,之后再實(shí)例化內(nèi)部類對(duì)象,因?yàn)閮?nèi)部類有可能訪問外部類之中的屬性,而所有的屬性一定要在關(guān)鍵字new之后分配空間產(chǎn)生
如果一個(gè)內(nèi)部類不想讓外部使用,只希望在內(nèi)部使用,可以添加PRivate聲明內(nèi)部類
二、使用static定義內(nèi)部類
內(nèi)部類不想受到外部類之中屬性的控制,而可以直接去實(shí)例化對(duì)象,那么在定義內(nèi)部類時(shí)就可以使用static關(guān)鍵字聲明,而且使用static聲明的內(nèi)部類嚴(yán)格來講就是一個(gè)外部類,只能夠調(diào)用所在外部類的static屬性;
范例5:
語法:
外部類 .內(nèi)部類 內(nèi)部類對(duì)象= new 外部類.內(nèi)部類();
使用static修飾后的內(nèi)部類,若想使用外部類的屬性則外部類屬性也應(yīng)該使用static關(guān)鍵字;
四、在方法中定義內(nèi)部類
理論上內(nèi)部類可以在任意位置上定義,這就包括了:類中,代碼塊中,方法中;
范例6:
范例7:
在方法中定義的內(nèi)部類若想訪問方法的參數(shù)或者方法定義的變量,則方法或變量前應(yīng)加上一個(gè)關(guān)鍵字“final”(此處的final這是個(gè)標(biāo)記并非真實(shí)使用)
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注