黑馬程序員——淺談java中內部類

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS開發</a>、<a href="http://edu.csdn.net"target="blank">.Net培訓</a>、期待與您交流! ----------------------


內部類

使用情況:但描述事物時, 事物的內部還有事物,該事物用內部類來描述
   因爲內部事務在使用外部事務的內容

內部類的訪問規則:
1,內部類可以直接訪問外部類中的成員,包括私有。
 之所以可以直接訪問外部類的成員,是因爲內部類持有了一個外部類的引用,格式:外部類名.this
2, 外部類要訪問內部類,必須先建立內部類對象。

訪問格式:
1,當內部類定義在外部類的成員位置上,而且非私有,
   可以在外部其他類中訪問,需要直接建立內部類對象。
   格式:
  外部類名.內部類名  變量名  =  外部類對象.內部類對象
  Outer.Inner in = new Outer().new Inner();
2,當內部類在成員位置上,就可以被成員修飾符所修飾。
 比如  private:將內部類在外部類中進行封裝。
    static:內部類就具備static的特性。
    當內部類被static修飾後,只能直接訪問外部類中的static成員,出現了訪問侷限。
  
  在外部其他類中,如何直接訪問static內部類的非靜態成員呢?
  new Outer.Inner().function();

  在外部其他類中,如何直接訪問static內部類的靜態成員呢?
  Outer.Inner.function();

注意:當內部類定義了static成員時,內部類必須聲明爲static的
   當外部類的靜態方法訪問內部類是,內部類也必須是static的

 實例代碼:

class Outer
{
 private int x = 3;
 void method()
 {
  Inner in = new Inner();
  in.function();
 }


 class Inner //內部類
 {
  int x = 4;
  void function()
  {
   int x = 5;
   System.out.println("inner:"+x);//函數內的局部變量x
   System.out.println("inner:"+this.x);//內部類中的成員變量x
   System.out.println("inner:"+Outer.this.x);//外部類的成員變量x
  }
 }
}

class InnerClassDemo
{
 public static void main(String[] args)
 {
  //Outer o = new Outer();
  //o.method();
  Outer.Inner in = new Outer().new Inner();
  in.function();

 }
}

 

 

 

 


 

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS開發</a>、<a href="http://edu.csdn.net"target="blank">.Net培訓</a>、期待與您交流! ----------------------

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