1. Java的內部類機制
所謂內部類,是指在一個類的內部還有另外一個類的定義. 在Java中,可以在類的內部定義內部類, 也可以在方法內部定義一個類.
對於第一種形式,即類的內部定義一個新類,比較簡單,舉例如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
class Outer //外部類 { private String name = "newsainton" ; class Inner //內部類 { //內部類可以調用調用外部類的私有屬性name,並打印之. public void printName() { System.out.println( "name = " +name); } } //定義一個外部類的方法,調用內部類的方法 public void print() { new Inner().printName(); } } class OODemo04 { public static void main(String args[]) { //先產生一個外部類對象 Outer out = new Outer(); //調用外部類的打印方法 out.print(); } } |
而對於第二種,在方法體內定義內部類, 有需要注意的地方就是: 在方法體內定義的內部類,可以訪問外部類的任意屬性,但是不能直接訪問方法中的參數變量.
如果需要讓內部類訪問方法的參數變量,需要在方法參數前加上"final"關鍵字.
舉例如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
class Outer //外部類 { private String name = "newsainton" ; public void fun( final int i) //在方法內定義內部類 { //若內部類要訪問這裏的i和j,需要將i&j設置爲final final int j = 10 ; class Inner //內部類 { //內部類可以調用調用外部類的私有屬性name,並打印之. public void printName() { System.out.println( "name = " +name); System.out.println( "i + j = " +(i+j)); } } new Inner().printName(); } } class OODemo05 { public static void main(String args[]) { //先產生一個外部類對象 Outer out = new Outer(); //調用外部類的打印方法 out.fun( 13 ); } } |
使用內部類的優缺點是:
(1)優點: 使用內部類可以直接訪問外部類的私有屬性;
(2)缺點: 含有內部類的程序,代碼結構不很好.