java四種內部類的簡單分析

一、內部類:
    1.靜態內部類:
        1.必須以static關鍵字標註
        2.只能訪問外部類中的靜態的成員變量或者是靜態的方法    
        3.訪問一個內部類使應該這樣outerClass.innerClass inter = new outerClass.innerClass();不能直接實例化內部類    
        2.成員內部類:
        1.定義在一個類的內部,但是沒有static關鍵字修飾
        2.生成示例的方法outerClass.innerClass inter = (new outerClass()).new innerClass()
        3.對外部類變量的引用outClass.this.variale
        4.可以訪問外部類的靜態與非靜態方法
    3.局部內部類:
        1.局部內部類指的是定義在一個方法中的類
        2.只有在當前方法中才能對局部內部類裏面的方法以及變量進行訪問
        3.局部內部類只能訪問其所在方法的final類型變量
    4.匿名內部類:
        隱式的繼承一個父類或者是實現某個接口


舉例說明:

    1.

package tp85.innerClass;


public class StaticDemo
{
    public static void main(String[] args)
    {
        BB.AA ba = new BB.AA();
        ba.put();
    }
 
}
class BB
{
    int a = 1;
    static int b = 2;
     static class AA
        {
            void put()
            {
                System.out.println("helloword");
                //只能訪問其外部類的static變量
                //System.out.println(a);
                System.out.println(b);
            }
        }
}


    2.

package tp85.innerClass;

public class MenberDemo
{
    public static void main(String[] args)
    {
        //成員內部類的實例化比較特殊,如下所示
        DD.CC dc = new DD().new CC();
        dc.put();
    }
}
class DD
{
    int a = 1;
    static int b = 2;
    class CC
        {
            void put()
            {
                System.out.println("helloword");
                //能訪問其外部類的static變量或者是非靜態的變量
                System.out.println(a);
                System.out.println(b);
            }
        }
}


    3.
package tp85.innerClass;

public class PartDemo
{
    public static void main(String[] args)
    {
        FF ff = new FF();
        ff.put();
    }
}
class FF
{
    
    void put()
    {
        //只能是final類型的
        final int b = 2;
        class EE
        {
            int a = 1;
            void print()
            {
                System.out.println("print");
                System.out.println(b);
            }
            
        }
        new EE().print();// 只有在同一方法下才能實例化此類型的內部類
    }
}
    4.


package tp85.innerClass;

public class StaticDemo
{
    public static void main(String[] args)
    {
        BB.AA ba = new BB.AA();
        ba.put();
    }
 
}
class BB
{
    int a = 1;
    static int b = 2;
     static class AA
        {
            void put()
            {
                System.out.println("helloword");
                //只能訪問其外部類的static變量
                //System.out.println(a);
                System.out.println(b);
            }
        }
}    







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章