1. 程式人生 > >Java學習(內部類)

Java學習(內部類)

1. 成員內部類

  1)格式:

  修飾符 class 類名稱

  {

    修飾符 class 類名稱

    {

      //......

    }

    //...... 

  }

  2)內部類呼叫包含該內部類的外部類類成員變數與方法隨意訪問,反過來則需要使用內部類物件呼叫

  3)使用內部類的方法:

    間接方法:在外部類的方法中,使用內部類呼叫其中的方法與變數。

    直接方法:外部類名.內部類名稱 物件名 = new 外部類名稱().new 內部類名稱()

  4)訪問重名的外部類成員變數

    出現重名情況,可以用:外部類名.this.外部類成員變數名稱   

public class Outer{
    int num = 10;//外部類成員變數
    public class Inner{
        int num = 20;//內部類成員變數
        public void method(){
            int num =30;//內部類區域性變數
            System.out.println(num);//輸出內部類區域性變數,就近原則
            System.out.println(this.num);//輸出內部類成員變數
            System.out.println(Outer.this.num);//輸出外部類成員變數
        }
    }
}

 

2. 區域性內部類

  格式:

修飾符 class 外部類名稱{

  修飾符 返回值型別 外部類方法名稱(引數列表){

    class 區域性類名稱{

      //......

    }

  }

}

3. 類定義時的許可權修飾符規則

  1)外部類:public/(default)

  2)成員內部類:public/protected/(default)/private

  3)區域性內部類:什麼都不用寫

4. 匿名內部類

如果介面的實現類(或者父類的子類)只需要使用一次,就可以省略該類的定義,改為使用匿名內部類

介面名稱 物件名 = new 介面名稱(){

  //覆蓋重寫介面中所有抽象方法

}

省略了實現類/子類名稱,匿名物件則是省略了物件名稱