java類(lèi) java內(nèi)部類(lèi)可以訪問(wèn)外部類(lèi)的靜態(tài)方法嗎?
java內(nèi)部類(lèi)可以訪問(wèn)外部類(lèi)的靜態(tài)方法嗎??jī)?nèi)部類(lèi)相當(dāng)于外部類(lèi)的成員變量,因此它可以直接訪問(wèn)外部變量。外部類(lèi)不能直接訪問(wèn)內(nèi)部類(lèi)變量。必須通過(guò)創(chuàng)建內(nèi)部類(lèi)實(shí)例的方法訪問(wèn)它。新的內(nèi)部類(lèi)(32)。M是創(chuàng)建一個(gè)內(nèi)
java內(nèi)部類(lèi)可以訪問(wèn)外部類(lèi)的靜態(tài)方法嗎?
內(nèi)部類(lèi)相當(dāng)于外部類(lèi)的成員變量,因此它可以直接訪問(wèn)外部變量。外部類(lèi)不能直接訪問(wèn)內(nèi)部類(lèi)變量。必須通過(guò)創(chuàng)建內(nèi)部類(lèi)實(shí)例的方法訪問(wèn)它。新的內(nèi)部類(lèi)(32)。M是創(chuàng)建一個(gè)內(nèi)部類(lèi)實(shí)例來(lái)訪問(wèn)內(nèi)部類(lèi)成員變量。您無(wú)法理解的是外部類(lèi)如何訪問(wèn)內(nèi)部類(lèi)的私有變量。通常,私有變量m只能在innerclass中訪問(wèn),但是您應(yīng)該注意,例如,內(nèi)部類(lèi)相當(dāng)于外部類(lèi)的成員變量。類(lèi)outer{private int m private Class inner{private int n private int k}}m和類(lèi)inner是成員變量,它們相等。唯一的區(qū)別是內(nèi)部封裝了幾個(gè)成員變量,比如N,K,也就是說(shuō)m,N,K是相等的,這與首先訪問(wèn)N不同,內(nèi)部類(lèi)和外部類(lèi)處于同一級(jí)別。內(nèi)部類(lèi)不會(huì)在方法執(zhí)行時(shí)被銷(xiāo)毀,因?yàn)樗窃诜椒ㄖ卸x的。問(wèn)題是,如果外部類(lèi)的方法中的變量沒(méi)有定義final,那么在執(zhí)行外部類(lèi)的方法時(shí),局部變量將是GC。但是,在執(zhí)行內(nèi)部類(lèi)的方法之前,找不到它引用的外部變量。如果它被定義為final,Java將復(fù)制這個(gè)變量并將它作為成員變量構(gòu)建到內(nèi)部類(lèi)中。這樣,因?yàn)閒inal修改的值不能更改,所以該變量指向的內(nèi)存區(qū)域不會(huì)更改。