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);
            }
        }
}    







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