不能把类B的定义在成员函数f()里面
局部内部类不能访问局部的,可以访问成员变量(全局的)。
当方法执行完以后,就会出栈,属性也就没有了,但局部内部类的对象可能还在被其他对象引用,但调用的局部属性却没有了,所以,只能调用final的;如果没有明确定义final也可以在局部内部类中使用,但一旦使用就会默认改为是final变量
因为final变量在局部内部类使用时,相当于会拷贝一份,所以尽管方法弹栈了,局部变量还是能使用
之所以能调用,是因为你的类定义在了方法里,方法的a,b变量对于类B来讲都是成员变量