java學習之內部類

//外嵌類
public class Test{
    //內嵌類
    class Teacher{
        public void teach(){

        }
    }
    public static void main(){

    }
}

 

(1)外嵌類:自己內部定義了類的類

(2)內嵌類:在其他類中定義的類

 

類是由屬性和行爲構成,具體來說是成員變量方法

內部類相當於是外嵌類特殊的成員變量【註明2】

 

當內部類和外嵌類有重名成員,想要調用外嵌類的成員時,需要 外嵌類名.this.成員名

 

(1)內部類可以訪問所在類的所有成員,即使該成員是private的。

(2)外嵌類不能直接訪問內部類的所有成員,需要先創建內部類的對象,通過內部類的對象來訪問

 

常見調用內部類方法的手段

public Teacher getTeacher(){      //創建一個返回內部類對象的函數
    return new Teacher();
}

在main函數中
(1)創建外嵌類的對象
(2)通過外嵌類對象調用上述方法
(3)通過上述方法調用需要的內部類對象

Test test = new Test();
test.getTeacher().teach();
//局部內部類:在函數內部創建的類
public void test(){
    class Student{

    }
}

局部內部類的對象 只能在該函數中使用

局部內部類前不能加訪問限定符,如public

 

//匿名類:沒有名字
//直接允許一個類的子類,用這個子類的類體創建一個子類的對象
Test test = new Test(){

}

在java中不常見,在javaScript中常見

類似於上轉型對象,可以重寫外嵌類的方法,調用是顯示的是重寫後的【註明1】

類似於上轉型對象,test是外嵌類的方法,是不能夠調用子類新增的方法,所以匿名類新增的方法,永遠不會被調用

 

【註明1:局部變量前不能加訪問限定符,否則報錯】

【註明2:定義在一個類內部的類,叫作“嵌套類”。嵌套類分爲兩種:static的和非static的。後者又有一個專門的名字,叫作“內部類”。】

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