方法中的内部类能不能访问方法中的局部变量

public class LocalInnerClassTest{ public static void main(String[] args){ Outer obj=new Outer(); //生成一个外部类对象 SuperInner si=obj.outer(); //调用外部类中的outer()方法,返回一个SuperInner类型对象赋值给si si.m1(); //调用被覆盖的方法m1(),输出:Inner's m1() 20 } } /** *定义一个接口SuperInner,内部定义一个抽象方法m1(),无返回类型 */ interface SuperInner{ public void m1(); } /** *定义一个类Outer,内部只定义一个方法outer(),返回类型为SuperInner */ class Outer{ public SuperInner outer(){ int a=10; //方法中定义一个局部变量a,并赋值为10 final int b=20; //再定义一个final局部变量b,初始化为20 class Inner implements SuperInner{ //在outer()方法中定义一个局部内部类Inner,实现接口SuperInner public void m1(){ //类中只有一个覆盖接口SuperInner的方法m1() System.out.println("Inner's m1()"+a); //编译报错 System.out.println("Inner's m1() "+b); //编译通过,输出:Inner's m1() 20 } } return new Inner(); } }

你可能感兴趣的:(String,Class)