• 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();
        }
    }
    如果有使用请标明来源:http://www.cnblogs.com/duwenlei/
  • 相关阅读:
    KDiff
    如何用Javascript检测到所有的IE版本
    Chrome中的哪些端口是限制使用的?
    如何防止XSRF攻击
    External component has thrown an exception
    OpenGL中的原子操作需要注意的地方
    Unable to create new web application
    How to Redirect in ASPNET Web API
    图形转换的组合(注意从右向左读)
    如何用Client OM获取页面上一个Content web part的内容
  • 原文地址:https://www.cnblogs.com/duwenlei/p/4166886.html
Copyright © 2020-2023  润新知