java内部类与匿名类习题

请问C为什么错了呀?并且把这段代码打到eclipse没有报错呀

img

img


选C,非静态内部类不能有静态的变量,因为如果是静态的,就可以用类名.变量名访问,但是非静态内部类是需要外部类实例化之后才能进行内部类的实例化,所以会报错。

B是对的,内部类和外部类可以存在同名变量,如果要返回在内部类里面访问外部类的变量,需要外部类名称.this.外部类成员变量名。
比如:OutClass.this.m

非static的内部类,在外部类加载的时候,并不会加载它,所以它里面不能有静态变量或者静态方法。
所以static float n = xxx这句是错误的。这题答案是错的,就是选B