内部类(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.局部内部类:(留空) */