天天看點

局部内部類

局部内部類:在一個類的方法内部定義另外一個類,那麼另外一個類就稱作為局部内部類。

局部内部類要注意的細節:

/**
* Author:Liu Zhiyong
* Version:Version_1
* Date:2016年6月13日21:02:38
* Desc:局部内部類:在一個類的方法内部定義另外一個類,那麼另外一個類就稱作為局部内部類。
    
    局部内部類要注意的細節:
      1.如果局部内部類通路了一個局部變量,那麼該局部變量必須使用final修飾
*/
class Outer
{
  String name = "外部類的name ";
  public void test(){
    //局部變量
    final int y = 100; //y什麼時候從記憶體中消失?方法執行完畢之後y消失。
    //局部内部類
    class Inner{/*當test方法執行完畢之後,那麼y馬上從記憶體中消失,
          而Inner對象在方法執行完畢的時候還沒有從記憶體中消失,
          而inner對象的print方法還在通路着y變量,這時候的y變量已經消失了,
          那麼就給人感覺y的生命周期已經被延長了。
          解決方案:如果一個局部内部類通路一個局部變量的時候,
                那麼就讓該局部類内部類通路這個局部變量的複制品。
          */
      int x = 10;
      
      public void print(){
        System.out.println("這是局部内部類的print方法。"+ name + y);
      }
    }
    Inner inner = new Inner(); //inner對象什麼時候消失?Inner對象的生命周期比局部變量y的生命周期要長
    inner.print();
  }
}
class  Demo60
{
  public static void main(String[] args) 
  {
    Outer outer = new Outer();
    outer.test();
  }
}
      

繼續閱讀