zoukankan      html  css  js  c++  java
  • 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{}//错误
  • 相关阅读:
    将小度WiFi改造为无线网卡(小度WiFi能够接收WiFi信号)
    百度8秒教育片
    MATLAB r2014a 下载+安装+激活
    lsmod
    ipython与python的区别
    ssh远程登录Ubuntu报错:Permission denied, please try again.
    windows系统安装ubuntu后,grub中没有windows启动项
    面向对象三大特征
    进程和线程
    tar 命令
  • 原文地址:https://www.cnblogs.com/lql6/p/10653923.html
Copyright © 2011-2022 走看看