JAVA內部類機制

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)缺點: 含有內部類的程序,代碼結構不很好.

發佈了80 篇原創文章 · 獲贊 54 · 訪問量 27萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章