java基礎-內部類

1. 什麼是內部類

將類寫在其他類的內部,可以寫在其他類的成員位置和局部位置,這時寫在其他類內部的類就稱之爲內部類,其他類稱之爲外部類。在描述事物的時候,若一個事物內部還包含其他可能包含的事物,這時,就可以使用內部類來進行描述。

我們在定義內部類的時候,就是一個正常定義類的過程,同樣包含各種修飾符、繼承與實現關係等,在內部類中可以直接訪問外部類的所有成員

eg:

class 汽車{    //    外部類
    class 發動機{    //內部類
    }
}

2. 內部類的分類

內部類可分爲:成員內部類、局部內部類

  • 成員內部類

什麼是成員內部類?
成員內部類,定義在外部類中的成員位置,與類中的成員變量相似,可以通過外部類對象進行訪問

定義格式

class 外部類{
    修飾符 class 內部類{
        //XXX
    }
}

訪問方式
外部類名.內部類名 變量名 = new 外部類名().new 內部類名();

舉個栗子:

//定義類
class Body {    //外部類,身體
    private boolean life= true;     //生命狀態
    public class Heart {     //內部類,心臟
        public void jump() {
            System.out.println("心臟噗通噗通的跳")
            System.out.println("生命狀態" + life);     //訪問外部類成員變量
        }
    }
}
//訪問內部類
public static void main(String[] args) {
    //創建內部類對象
    Body.Heart bh = new Body().new Heart();
    //調用內部類中的方法
    bh.jump();
}
  • 局部內部類

什麼是局部內部類
局部內部類,定義在外部類方法中的局部位置,與訪問方法中的局部變量相似,可以通過調用方法進行訪問

定義格式

class 外部類 {
    修飾符 返回值類型 方法名(參數){
        class 內部類 {
            //XXX
        }
    }
}

訪問方法
在外部類方法中,創建內部類對象進行訪問

舉個栗子:

//定義類
class Party {    //外部類,聚會
    public void puffBall(){    // 吹氣球方法
        class Ball {    // 內部類,氣球
            public void puff(){
                System.out.println("氣球膨脹了");
            }
        }
        //創建內部類對象,調用puff方法
        new Ball().puff();
    }
}
//訪問內部類
public static void main(String[] args) {
    //創建外部類對象
    Party p = new Party();
    //調用外部類中的puffBall方法
    p.puffBall();
}

3.匿名內部類

  • 什麼是匿名內部類?

內部類是爲了應對更爲複雜的類之間的關係,在查看源碼時會涉及到,而在開發過程中很少遇到,比較常用的內部類就是匿名內部類了,它是局部內部類的一種

  • 匿名內部類的作用

匿名內部類是創建某個類型子類對象的快捷方式

  • 格式
new 父類或接口() {
    //方法重寫
};
  • 舉個栗子:
//已經存在的父類:
public abstract class Person{
    public abstract void eat();
}
//定義並創建該父類的子類對象,並用多態的方式賦值給父類引用變量
Person  p = new Person(){
    public void eat() {
        System.out.println(“我吃了”);
    }
};
//調用eat方法
p.eat();

使用匿名對象的方式,將定義子類與創建子類對象兩個步驟由一個格式一次完成

new Person(){
    public void eat() {
        System.out.println(“我吃了”);
    }
}.eat();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章