內部類學習筆記(二)方法內部類

2021-06-22 13:38:44 字數 1518 閱讀 5861

方法內部類如下:

class outer 

}

}}

a、方法內部類只能在定義該內部類的方法內例項化,不可以在此方法外對其實例化。

b、方法內部類物件不能使用該內部類所在方法的非final區域性變數。

因為方法的區域性變數位於棧上,只存在於該方法的生命期內。當乙個方法結束,其棧結構被刪除,區域性變數成為歷史。但是該方法結束之後,在方法內建立的內部類對 象可能仍然存在於堆中!例如,如果對它的引用被傳遞到其他某些**,並儲存在乙個成員變數內。正因為不能保證區域性變數的存活期和方法內部類物件的一樣長, 所以內部類物件不能使用它們。

下面是完整的例子:

package com.inner;

/** * created with intellij idea.

* user: 菜鳥大明

* date: 14-6-29

* time: 下午3:28

* to change this template use file | settings | file templates.

*/public class outer4

}inner in = new inner();

in.seeouter();

}public static void main(string args)

}

c、方法內部類的修飾符。

與成員內部類不同,方法內部類更像乙個區域性變數。

可以用於修飾方法內部類的只有final和abstract。

package com.inner;

/** * created with intellij idea.

* user: 菜鳥大明

* date: 14-6-29

* time: 下午3:29

* 方法內部類的abstract內部類

*/public class outer5

new inner()

}.sayhello();

}public static void main(string args)

}

d、靜態方法內的方法內部類。

靜態方法是沒有this引用的,因此在靜態方法內的內部類遭受同樣的待遇,即:只能訪問外部類的靜態成員。

package com.inner;

/** * created with intellij idea.

* user: 菜鳥大明

* date: 14-6-29

* time: 下午3:33

* 靜態方法內的方法內部類。

*/public class outer6

}inner in = new inner();

in.seeouter();

}public static void main(string args)

}

內部類(成員內部類 靜態內部類 方法內部類)

一 成員內部類 最常見的內部類就是成員內部類,也稱作普通內部類 2 inner類中定義的test 方法可以訪問outer類中的資料,不受訪問控制符的影響。3 定義了成員內部類後,必須使用外部類物件來建立內部類物件,而不能直接去 new 乙個內部類物件,即 內部類 物件名 外部類物件.new 內部類 ...

方法內部類(區域性內部類)

關於內部類,所謂內部類,就是乙個類裡面再寫了乙個類,和c語言裡面的巢狀關係很相似,我就介紹一下方法內部類 一 方法內部類 又名區域性內部類 由名字可知,該內部類是寫在乙個方法裡面的,其用法如下 1.方法內部類的地位和方法裡面的區域性變數相似,所以不能用public等修飾詞修飾 2.方法內部類只能在宣...

內部類學習筆記

案例演示 成員內部類使用 public class test class outer 案例演示 靜態內部類使用 public class test class outer 案例演示 區域性內部類使用 public class test class outer 建立區域性內部類物件 inner inn...