1、基礎篇--1.1內部類

 內部類主要有4種:

1.靜態內部類(static inner class)

定義以下:java

class OutClass{
    static class InnerClass{} //靜態內部類
}

靜態內部類是指被聲明爲static的內部類,它不依賴與外部類實例而被實例化。靜態內部類不能訪問外部類的普通成員變量,只能訪問外部類中的靜態成員和靜態方法包含私有類型)。ide

2.成員內部類(member inner class)函數

定義以下:code

class OutClass{
    class InnerClass{} //成員內部類
}

成員內部類就是普通的內部類,能夠自由引用外部類的方法,無論是靜態仍是非靜態,可是內部不能夠定義靜態的方法和屬性,並且只有被內部類被實例化後,這個類才能被實例化。繼承

3.局部內部類(local inner class)接口

定義以下:class

class OutClass{
    public void doSomeWork(){
        class innerClass{} //局部內部類
    }
}

局部內部類是定義在代碼塊中的類,它的做用範圍爲所在的代碼塊中,極少用到。局部內部類跟局部變量比較相似,不能被public、protected、private以及static修飾,只能訪問方法中定義爲final類型的局部變量。若是局部內部類,在靜態的代碼塊或者方法中,則會變成局部靜態內部類。變量

4.匿名內部類(anonymous inner class)構造函數

定義以下:引用

class OutClass{
    new Runnable(){

            @Override

            public void run() {

                

            }

        }.run();
}

匿名內部類是一個沒有類名的內部類,不能使用關鍵字class、extends、implement,沒有構造函數,自身必須繼承其餘類或者接口。匿名內部類的好處是代碼更加簡潔。使用內部類須要牢記一下幾個原則:

    1.匿名內部類不能有構造函數;

    2.匿名內部類不能定義靜態成員、方法和類;

    3.匿名內部類不能是public、protected、private、static;

    4.只能建立內部類的一個實例;

    5.一個匿名內部類必定是在new的後面,必須繼承一個父類或者實現一個接口;

    6.匿名內部類爲局部內部類,因此局部內部類的全部限制都對其生效。

相關文章
相關標籤/搜索