如果一个类是定义在一个方法内部的,那么这就是一个局部内部类
“局部”:只有当前所属的方法才能使用它,出了这个方法外面就不能使用了
定义格式:
修饰符 class 外部类名称{
修饰符 返回值类型 外部类方法名称(参数列表){
class 局部内部类名称(参数列表){
//...
}
}
}
权限修饰符小结:
定义一个类的时候,权限修饰符规则:
1.外部类 public/(default)
2.成员内部类 public/protected/(default)/private
3.局部内部类 什么都不能写
局部内部类的final问题
局部内部类,如果希望访问所在方法的局部变量,那么这个局部变量必须是【有效final】的
从java8开始,只要局部变量事实不变,那么final关键字可以省略
原因:
1.new出来的对象在堆内存当中
2.局部变量是跟着方法走的,在栈内存当中
3.方法运行结束之后,立刻出栈,局部变量就会立刻消失
4.但是new出来的对象会在堆当中持续存在,直到垃圾回收消失