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