class NeiClass3{ public static void main(String[] args) { A a = new A(); a.show(); }}class A{ int num1 = 10; //内部类B class B { int num2 = 20; } //方法 public void show(){ final int num3 = 30; //????????????????????? //局部内部类 class C { int num4 = 40; public void show2(){ //System.out.println("局部内部类show"+num4); System.out.println("局部内部类show"+num3); //System.out.println("局部内部类show"+num1); } } new C().show2(); }}
3 回答
已采纳
onemoo
TA贡献883条经验 获得超454个赞
是的,在 1.8 之前,“本地(local)变量”必须声明为 final 才能被“本地内部类(local inner class)”所访问。
在 1.8 中限制放宽了一些:不必须用 final 修饰,只要是“事实常量”就可被 local inner class 访问。
望远
TA贡献1017条经验 获得超1032个赞
并没有这个限制,final这是修饰常量的,
局部变量用final修饰吗?所以既然是变量就不能用final来修饰。
常量只能在定义的时候完成初始化,并禁止修改常量值。
对方法的局部变量只是要求在定义时完成初始化即给定初值(虽然要求给定初值,但是依旧是变量),因为局部变量的值如果不初始化就是一个随机值,不像属性一般,即便是没有初始化也有一个初始值如:
class Test{ public int num;//默认初值为0 public void test() { int sum=0;//局部变量要求在定义时完成初始化即给定初值 } }
添加回答
举报
0/150
提交
取消