内部类(2)

内部类(2)

局部内部类

如果一个类是定义在一个方法内部的,那么就是一个局部内部类

“局部”,只有所属方法才能调用。

定义格式: 修饰符 class 外部类名称{

         修饰符 返回值类型 外部方法名 (参数列表){

                 class 局部内部类名称 {

                           //....

                }

       }

}

 

public class juOter {
        public void otermethod(){
            final int num2=12;
            class Inner{//局部内部类(格式)
                int num = 10;
                public void intermethod(){
                System.out.println(num);

                System.out.println(num2);
                /*
                局部内部类子想要访问成员方法的局部变量,则该变量必须是有效final的(即只赋值一次,不在变化)
                在jdk8以上版本不必一定写final关键字只需要赋值一次即可

                原因:
                局部变量和局部变量创建对象后所在的内存区不同,前者在栈内存中,后者在堆内存中
                前者随方法的结束而凋亡,后者有垃圾回收机制自动回收(存在时间更长),所以只有
                当前者为常变量时,后者可以进行复制保存而存储更长时间。
                 */
            }

        }
        Inner inner = new Inner();
        inner.intermethod();
        //只能在方法中使用局部内部类
    }
}

/*
权限修饰符:
1.外部类:public/(留空)
2.成员内部类:public/protected/(留空)/private
3.局部内部类:(留空)
 */
原文地址:https://www.cnblogs.com/susexuexi011/p/13811598.html