zoukankan      html  css  js  c++  java
  • 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/
  • 相关阅读:
    [LC] 270. Closest Binary Search Tree Value
    [LC] 452. Minimum Number of Arrows to Burst Balloons
    [LC] 494. Target Sum
    [LC] 350. Intersection of Two Arrays II
    [LC] 349. Intersection of Two Arrays
    [LC] 322. Coin Change
    scala--函数和闭包
    scala-- 内建控制结构
    scala--函数式对象
    scala --操作符和运算
  • 原文地址:https://www.cnblogs.com/duwenlei/p/4166886.html
Copyright © 2011-2022 走看看