• Java内部类


    public class Test {
        public static void main(String[] args) {
            //创建外部类
            Outer outer = new Outer();
            //通过外部类创建内部类
            Outer.Inner inner1 = outer.new Inner();
            //直接创建类
            Outer.Inner inner2 = new Outer().new Inner();
            inner2.print();
    
            //静态内部类,可反射操作该类
            Outer1.Inner inner3 = new Outer1.Inner();
            inner3.print();
    
            //匿名内部类,反射可以判断这个类是不是匿名类,但不能操作匿名类
            new Outer2(){ //匿名类的实现类,不是实例化
                @Override
                void run(){
                    System.out.println("实现匿名内部类中的方法。");
                }
            }.run();
    
            new IFunction(){
                @Override
                  public void test(){
                    System.out.println("xx");
                }
            };
    
            //局部内部类
            Outer3 outer3 = new Outer3();
            outer3.test();
    
            //局部类的继承
            new Child();
        }
    }
    
    
    //1.一般内部类
    //闭包:提高变量生命周期
    class Outer{
        //通过内部类的对象的实例调用内部类中的私有方法
        private void outerPrint(){
            new Inner().print();
        }
        int i =20;
        class Inner{
            int i = 100;
            public  Inner(){
                System.out.println("内部类实例化");
            }
            public void print(){
                //调用外部类的私有方法
                //outerPrint();
                System.out.println("内部类"+this.i);
                System.out.println("外部类"+Outer.this.i);
            }
        }
    }
    
    //2.嵌套内部类 -> 静态内部类
    class  Outer1{
    
        static class Inner{
            public Inner(){
                System.out.println("outer1 Inner实例化");
            }
            int i =0;
            void print(){
                System.out.println("静态内部类中的方法");
            }
        }
    }
    
    //3.匿名内部类
    abstract class Outer2{
        abstract void run();
        public void outer22(){
            System.out.println("Outer2匿名类中的方法。");
        }
    }
    
    interface IFunction{
        void test();
    }
    
    //4.局部内部类
    class Outer3{
        void test(){
            class Inner{
                void print(){
                    System.out.println("Outer3局部内部类的方法。");
                }
            }
            new Inner().print();
        }
    }
    
    //静态内部类才能被外部类继承
    class Child extends Outer1.Inner{}
    //class Child1 extends Outer.Inner{}//错误
  • 相关阅读:
    Android webView 缓存 Cache + HTML5离线功能 解决
    android 退出系统
    WebView简介(加速加载篇)
    android 处理Back键按下事件
    android 极细线
    [cnblog新闻]历史性时刻:云硬件支出首次高于传统硬件
    Oracle ORDS的简单SQL配置模板
    [cnbeta]华为值多少钱,全世界非上市公司中估值最高的巨头
    其他数据库的restful方式
    [CB]2018全球半导体营收4700亿美元 三星继续碾压英特尔
  • 原文地址:https://www.cnblogs.com/lql6/p/10653923.html
Copyright © 2020-2023  润新知