美文网首页
java se 局部内部类

java se 局部内部类

作者: 起名字真难难难 | 来源:发表于2020-02-16 12:31 被阅读0次

    定义在方法内部
    只有当前所属方法可用,出方法不可用
    局部内部类想访问外部类所在方法的局部变量,这个局部变量必须是有效final的

     public void method1(){
            int num1=1;
            //局部内部类想访问外部类所在方法的局部变量,这个局部变量必须是有效final的
           //final可省略
           // num1=3;
            class Inner{
                public void method2(){
                    System.out.println(num1);
                }
            }
        }
    

    原因:
    1、new出来的变量在堆中
    2、局部变量跟着方法进栈
    3、运行结束随着方法出栈,立即消失
    4、new一直在堆中持续存在,直到垃圾收回消失
    所以就要保证局部变量消失之后也不会发生改变

    匿名内部类

    如果实现类或子类只需要使用一次,就可以省略掉该类的定义,改用匿名内部类

    接口名称.对象名=new 接口名称(){
        \\覆盖接口中所有抽象方法
    }
    

    1、解析格式:new 接口名(){}
    (1)new是创建对象动作
    (2)接口名称是匿名内部类需实现的那个接口
    (3){...}是匿名内部类的内容
    2、适用场景
    (1)匿名内部类在创建对象时只能使用一次,想多次创建对象且内容一样,要么再写一个匿名,要么定义一个实现类
    (2)匿名对象调用方法时,只能调用唯一一次,如果希望同一个对象,调用多次方法,那么必须给对象起名
    (3)匿名内部类省略了实现类或子类
    匿名对象省略了对象名称

    相关文章

      网友评论

          本文标题:java se 局部内部类

          本文链接:https://www.haomeiwen.com/subject/yxypfhtx.html