1.首先,把內(nèi)部類作為外部類的一個(gè)特殊的成員來看待,因此它有類成員的封閉等級:private ,protected,默認(rèn)(friendly),public 它有類成員的修飾符: static,final,abstract 2.非靜態(tài)內(nèi)部類nested inner class,內(nèi)部類隱含有一個(gè)外部類的指針this,因此,它可以訪問外部類的一切資源(當(dāng)然包括private) 外部類訪問內(nèi)部類的成員,先要取得內(nèi)部類的對象,并且取決于內(nèi)部類成員的封裝等級。 非靜態(tài)內(nèi)部類不能包含任何static成員. 3.靜態(tài)內(nèi)部類:static inner class,不再包含外部類的this指針,并且在外部類裝載時(shí)初始化. 靜態(tài)內(nèi)部類能包含static或非static成員. 靜態(tài)內(nèi)部類只能訪問外部類static成員. 外部類訪問靜態(tài)內(nèi)部類的成員,循一般類法規(guī)。對于static成員,用類名.成員即可訪問,對于非static成員,只能 用對象.成員進(jìn)行訪問
4.對于方法中的內(nèi)部類或塊中內(nèi)部類只能訪問塊中或方法中的final變量。
靜態(tài)內(nèi)部類 和普通的類一樣,內(nèi)部類也可以有靜態(tài)的。不過和非靜態(tài)內(nèi)部類相比,區(qū)別就在于靜態(tài)內(nèi)部類沒有了指向外部的引用。這實(shí)際上和C++中的嵌套類很相像了,Java內(nèi)部類與C++嵌套類最大的不同就在于是否有指向外部的引用這一點(diǎn)上,當(dāng)然從設(shè)計(jì)的角度以及以它一些細(xì)節(jié)來講還有區(qū)別。 除此之外,在任何非靜態(tài)內(nèi)部類中,都不能有靜態(tài)數(shù)據(jù),靜態(tài)方法或者又一個(gè)靜態(tài)內(nèi)部類(內(nèi)部類的嵌套可以不止一層)。不過靜態(tài)內(nèi)部類中卻可以擁有這一切。這也算是兩者的第二個(gè)區(qū)別吧。