Java 教程
在章節(jié)我們將來(lái)學(xué)習(xí) Java 的內(nèi)部類。
Java 一個(gè)類中可以嵌套另外一個(gè)類,語(yǔ)法格式如下:
class OuterClass { // 外部類 // ... class NestedClass { // 嵌套類,或稱為內(nèi)部類 // ... } }
要訪問(wèn)內(nèi)部類,可以通過(guò)創(chuàng)建外部類的對(duì)象,然后創(chuàng)建內(nèi)部類的對(duì)象來(lái)實(shí)現(xiàn)。
嵌套類有兩種類型:
非靜態(tài)內(nèi)部類是一個(gè)類中嵌套著另外一個(gè)類。 它有訪問(wèn)外部類成員的權(quán)限, 通常被稱為內(nèi)部類。
由于內(nèi)部類嵌套在外部類中,因此必須首先實(shí)例化外部類,然后創(chuàng)建內(nèi)部類的對(duì)象來(lái)實(shí)現(xiàn)。
以上實(shí)例執(zhí)行輸出結(jié)果為:
15
內(nèi)部類可以使用 private 或 protected 來(lái)修飾,如果你不希望內(nèi)部類被外部類訪問(wèn)可以使用 private 修飾符:
以上實(shí)例 InnerClass 設(shè)置為私有內(nèi)部類,執(zhí)行會(huì)報(bào)錯(cuò):
MyMainClass.java:12: error: OuterClass.InnerClass has private access in OuterClass OuterClass.InnerClass myInner = myOuter.new InnerClass(); ^
靜態(tài)內(nèi)部類可以使用 static 關(guān)鍵字定義,靜態(tài)內(nèi)部類我們不需要?jiǎng)?chuàng)建外部類來(lái)訪問(wèn),可以直接訪問(wèn)它:
以上實(shí)例執(zhí)行輸出結(jié)果為:
5
注意:靜態(tài)內(nèi)部類無(wú)法訪問(wèn)外部類的成員。
內(nèi)部類一個(gè)高級(jí)的用法就是可以訪問(wèn)外部類的屬性和方法:
以上實(shí)例執(zhí)行輸出結(jié)果為:
10其他擴(kuò)展