天天看点

java语言基础(48)——局部内部类访问外部成员和局部成员

局部内部类若是访问外部类的成员可以直接访问,若是访问局部变量,则变量必须用final修饰,也就是必须是常量。

原因:因为局部变量是随着方法的调用而存在,随着方法的调用结束而消失。如果但是局部内部类创建出的对象不会立即消失,如果它使用的局部变量消失了,就回产生问题。所以访问常量就无所谓了,因为常量在编译的时候,会替换成具体的内容。

上代码:

class Outer
{
  public int num = 10;
  public void method(){
        final int num2 = 20;
     class Inner
    {
      public void show(){ 
        //输出10 可以直接访问外部成员
        System.out.println(num); 

        //输出20 只能访问final修饰的局部变量
        System.out.println(num2);
      } 
    }
    Inner i = new Inner();
    i.show();
  }
   
}

class InnerClassTest
{
  public static void main(String[] args){
      
    Outer o = new Outer();
    o.method();// 10  20
       
  }
}      

继续阅读