黑馬程序員-java基礎 內部類

---------------------- android培訓java培訓 、期待與您交流! ----------------------

 

內部類 :在一個類中建立的類
內不類訪問規則:
1 內部類可以直接訪問外部類中的成員,包括私有。是因爲內部類中有一個外部類的引用:格式 外部類名.this
2 外部類訪問內部類需要創立內部類對象
3 外部其他類要直接訪問內部類的成員,需創立內部類對象。格式 外部類名字.內部類名字 變量名 =  外部類對象.內部類對象;
4 當內部類在成員位置上,就可以被成員修飾符修飾 比如 private  static。 當被static修飾後,只能直接訪問外部類中的靜態成員

注意:
1 當內部類中定義了靜態成員,該內部類必須是靜態的。
2 當外部類中的靜態方法訪問內部類的成員時,內部類也必須是靜態的
3 局部內部類不可以被成員修飾符修飾,不能定義靜態成員
4 局部內部類可以直接訪問外部類中的成員,但是不可以訪問它所在的局部中的變量,只能訪問被final修飾的局部變量

當描述事物時。事物的內部還有事物,該事物用內部類來描述。因爲內部事物在使用外部事物的內容。例如 人體和心臟。

匿名內部類:
1 沒有名字的內部類
2 定義匿名內部類的前提: 內部類必須繼承一個類或實現接口
3 匿名內部類格式: new父類或接口(){定義子類的內容}。
4 匿名內部類其實就是一個匿名 的子類對象
5 匿名內部類中的方法最好不要超過3個

實例
public class Outer {

 public final static int i = 5;

 // 成員內部類
 class Inner {
  int k = i;

  public void innerShow() {
   // 直接訪問外部類成員
   System.out.println(k);
  }
 }

 // 當內部類中有靜態成員 內部類必須定義爲靜態
 static class Inner3 {
  static int y;
 }

 // 外部類訪問內部類需要創建內部類對象
 Inner in = new Inner();

 public void add() {
  System.out.println(in.k);
  in.innerShow();
 }

 public static void show() {
  final int y = 9;
 
  // 局部內部類
  class InnerShow {

   // 可以直接訪問外部類的成員
   int x = i;
   // 只能訪問被final修飾的局部變量
   int z = y;

   public void innerAdd() {
    System.out.println(i);
    System.out.println(z);
   }
  }
  InnerShow is = new InnerShow();
  is.innerAdd();

  // 匿名內部類
  new FuLei() {
   public void save() {
    System.out.println("匿名內部類打印");
   }
  }.save();

 }

}

public class Test {
 
 
 public static void main(String[] args) {
  //其他類中直接訪問內部類
  Outer.Inner oi = new Outer().new Inner();
  oi.innerShow();
  //Outer o = new Outer();
    Outer.show();
  
 }
}

打印結果:
5
5
9
匿名內部類打印

 

 

 

---------------------- android培訓java培訓 、期待與您交流! ----------------------

詳細請查看:http://edu.csdn.net/heima

發佈了32 篇原創文章 · 獲贊 1 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章