北大青鳥:Java內(nèi)部類使用的建議(上)

北大青鳥北京學(xué)校學(xué)術(shù)部:

在Java內(nèi)部類中可以隨意使用外部類的成員方法以及成員變量。

眾所周知,在定義成員方法或者成員變量的時候,可以給其加上一些權(quán)限的修飾詞,以防止其他類的訪問。如在成員變量或者成員方法前面,加上Private關(guān)鍵字,則其他類就無法調(diào)用這個類中的成員方法或則和成員變量。但是,如果這個類有成員內(nèi)部類,則不受這方面的限制。也就是說,在成員內(nèi)部類中可以隨意引用外部類的成員方法以及成員變量,即使這些類成員方法或者成員變量被修飾了private。如在成員外部類中定義了一個i變量,并且利用private關(guān)鍵字來修飾。此時在其他類中是不能夠引用這個私有成員變量的。但是這個類的成員內(nèi)部類的方法中,則不僅可以引用這個外部類的私有變量,而且還可以對其進(jìn)行賦值等操作。這個賦值操作對于外部類也是有效的。即成員內(nèi)部類可以更改外部類中私有變量的值。(深入理解嵌套類和內(nèi)部類)(北大青鳥北京學(xué)校)

要在外部類中實(shí)例化內(nèi)部類對象的引用。

如果一個類定義在另外一個類中,成為成員內(nèi)部類,此時一定要注意,內(nèi)部類的實(shí)例一定要綁定在Java外部類的實(shí)例上。(如何在內(nèi)部類中返回外部類對象)也就是說,要從外部類中初始化一個內(nèi)部類的對象,此時內(nèi)部類的對象就會綁定在外部類的對象上。這跟普通的類有所不同。普通的類,創(chuàng)建完之后,不一定馬上需要實(shí)例化。在需要用到這個對象的時候,再進(jìn)行實(shí)例化即可。但是,如果一個類成為另外一個類的成員內(nèi)部類,則就不同了。必須要在外部類中實(shí)例化內(nèi)部類對象的引用,以實(shí)現(xiàn)將內(nèi)部類的實(shí)例綁定在外部類的實(shí)例上。簡單的說,就是在定義外部類的時候,如果有成員內(nèi)部類,那么就不要望了在外部類中利用new關(guān)鍵字來實(shí)例化內(nèi)部類對象的引用。而對于外部類來說,則可以在需要的時候再進(jìn)行實(shí)例化。如此就可以保證,利用外部類創(chuàng)建對象的同時創(chuàng)建了內(nèi)部類的對象。從而可以保證Java內(nèi)部類的實(shí)例綁定在外部類的實(shí)例上。(北大青鳥北京學(xué)校)

北大青鳥網(wǎng)上報名
北大青鳥招生簡章