java--4种内部类

内部类:

 

一 非静态内部类

//非静态内部类
//非静态内部类可任意调用外部类的局部变量,无论是否private
//在外部类中要实例化内部类:InnerClass inner = new InnerClass();
//其他类中实例化内部类:1.Test.InnerClass inner = new Test.new InnerClass();
//                     2.Test t = new Test();
//                       t.InnerClass inner = t.new InnerClass();
//
class Test{
    int i = 1;
    class InnerClass{
         public void run(){
              System.out.println("outclass field = " + i);
         }        
    }  
    public void run(){
        InnerClass inner = new InnerClass();
    }    
}
class RunTest{
    Test t = new Test();
    t.InnerClass inner = t.new InnerClass();   
    //或者  
    Test.InnerClass inner = new Test.new InnerClass();
}         

 

二 局部内部类

/**
 * 局部内部类
 * 1.局部内部类和局部变量作用相同,只在局部范围有效
 * 2.局部内部类中可以直接调用外部类的成员变量
 * 3.外部类创建局部内部类对象InClass inClass = new InClass();
 * * **/
public class OutClass {
    int i = 8;
    public void run(){
        class InClass{
            public void run(){
                System.out.println("run field i = " + i);
            }
        }
        InClass inClass = new InClass();
        inClass.run();
    }
    
}

三 静态内部类

/**
 * 静态内部类
 * 1.静态内部类也可正常访问外部类成员变量
 * 2.外部类实例化内部类InClass inClass = new InClass();
 *  * **/
public class OutClass {
    static int t = 6;
    static class InClass{
        int i = 5;
        int j = t;
    }
    public void run(){
        InClass inClass = new InClass();
        System.out.println(inClass.i);
    }
}

四 匿名内部类

    标准创建方式

new anonymous{

};

使用

/**
 * 匿名内部类 
 * **/
public class InnerClass4 {
    public static void main(String[] args) {
        Thread t = new Thread(){
            public void run(){
                for(int i = 1 ; i < 6 ; i++){
                    System.out.println(i + " Ÿ ");
                }
            }
        };
        t.start();
        Runnable r = new Runnable(){
            public void run(){
                for(int i = 6 ; i < 11 ; i++){
                    System.out.println(i + " U ");
                }
            }
        };
        Thread t1 = new Thread(r);
        t1.start();
    }
}

 

posted @ 2014-12-16 13:10  哎呦喂,我的小祖宗╰つ  阅读(182)  评论(0编辑  收藏  举报