Java 深入理解內部類
摘自海子:Java內部類詳解
深入理解內部類
1.為什麼成員內部類可以無條件訪問外部類的成員?
在此之前,我們已經討論過了成員內部類可以無條件訪問外部類的成員,那具體究竟是如何實現的呢?下面通過反編譯位元組碼檔案看看究竟。事實上,編譯器在進行編譯的時候,會將成員內部類單獨編譯成一個位元組碼檔案,下面是Outter.java的程式碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
public
class
Outter {
private
Inner inner =
null
;
public
Outter() {
}
public
Inner getInnerInstance() {
if
(inner ==
null
)
inner =
new
Inner();
return
inner;
}
protected
class
Inner {
public
Inner() {
}
}
}
|
編譯之後,出現了兩個位元組碼檔案:
反編譯Outter$Inner.class檔案得到下面資訊: