Java 內部類呼叫外部類方法的乙個注意點

2021-08-31 15:35:51 字數 535 閱讀 4723

今天在寫**的時候,涉及到使用乙個內部類去呼叫外部類方法的問題,總是得不到我想要的結果,後經過debug,才發現**出現了問題。現寫了乙個簡單的**,來重現這個問題。

列印出來的結果為:

a: 20

a: 0

a: 20

為什麼是這麼乙個結果呢?我想,對第乙個 20,大家應該沒有任何意見吧。那麼第二個為什麼是 0 呢?我一開始一直以為列印出來的應該是 20,所以一直沒想通,但看了以下兩張 debug 的圖之後,大家應該明白為什麼了吧。請注意圖中的斷點,與相應的 innerclassdemo 的 id。

回過頭來看第一張圖: ② 對應的 innerclass 中的 test() 方法實際上呼叫的是 ① 對應的 innerclassdemo 的 print(),且此時它的 a 的值仍為 0, 而 ④ 對應的innerclass 中的 test() 方法實際上呼叫的是 ③ 對應的 innerclassdemo 的 print(),而它的 a 的值已經經過 seta() 被賦值為了 20。所以,才會出現上面的列印結果。

Python 內部類,內部類呼叫外部類屬性,方法

一 python中內部類 class myouter age 18 def init self,name self.name name class myinner def init self,inner name self.inner name inner name out myouter lqz ...

46 外部呼叫內部類的方法

1.使用static可以宣告乙個內部類,可以直接在外部呼叫 class outer public void fun public class innerclassdemo03 2.不使用statc宣告乙個內部類 使外部呼叫 class outer public void fun public cla...

內部類和外部類方法間的互相呼叫

內部類呼叫外部類的方法 外部呼叫內部類的方法1.使用static可以宣告乙個內部類,可以直接在外部呼叫 定義外部類 public class outer 使用static定義內部類 static class inner public class test 2.不使用statc宣告乙個內部類 使外部呼...