Java自學筆記之內部類

嵌套類可以直接訪問嵌套它的類的成員,包括private成員,但是嵌套類的成員卻不能被嵌套它的類直接訪問。

在內部類對象保存了一個對外部類對象的引用,當內部類的成員方法中訪問某一變量時,如果在該方法和內部類中都沒有定義過這個變量,內部類中對this的引用會被傳遞給那個外部類對象的引用。

如果用static修飾一個內部類,這個類就相當於是一個外部定義的類,所以static的內部類中可聲明static成員,但是,非static的內部類中的成員是不能聲明爲static的。static的內部類不能再使用外層封裝類的非static的成員變量。

如果函數的局部變量(函數的形參也是局部變量),內部類的成員變量,外部類的成員變量重名,我們應該按下面的程序代碼所使用的方式來明確指定我們真正要訪問的變量。
public class Outer{
 private int size;
 public class Inner{
  private int size;
  public void doStuff( int size){
   size++; // 引用的是doStuff函數的形參
       this.size++; //引用的是Inner類中的成員變量
       Outer.this.size++; // 引用的Outer類中的成員變量

    }
 }
}

內部類被外部引用
class Outer
{
     private int size=10;
     public class Inner
     {
      public void doStuff()
      {
          System.out.println(++size);
      }
     }
}
    public class TestInner
    {
     public static void main( String[] args)
     {
      Outer outer = new Outer();
      Outer.Inner inner = outer.new Inner();
      inner.doStuff();
     }
    }
嵌套類並非只能在類裏定義,也可以在幾個程序塊的範圍之內定義內部類。例如,在方法中,或甚至在for循環體內部,都可以定義嵌套類 。
在方法中定義的內部類只能訪問方法中的final類型的局部變量,用final定義的局部變量相當於是一個常量,它的生命週期超出方法運行的生命週期。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章