1. 程式人生 > >什麼是內部類?內部類的作用

什麼是內部類?內部類的作用

  1. 在java語言中,可以吧一個類定義到另外一個類的內部,在類裡面的這個類就叫內部類,外面的類就叫外部類。在這情況下,這個內部類可以看做外部類的一個成員。還有一種類被稱為頂層類,指的是類定義程式碼不巢狀在其他類定義中的類。
  2. 需要注意的是巢狀類與內部類類似,只是巢狀類是C++的說法。 內部類可以分為多種、;主要一下4中:靜態內部類,成員內部類,區域性內部類,匿名內部類
  3. 程式碼
    class outerClass{
    static class innerClass{} //靜態內部類
    }
    class outerClass{
    class innerClass{} //成員內部類
    }
    class outerClass{
    public void menberFunction{
    static class innerClass{} /區域性內部類
    }
    }
    public class MyFrame extends Frame{//外部類
    public MyFrame(){
    addWindowsLister(new WindowsAdapter()){ //匿名內部類
    public void windowsClosing(WindowEvent e){
    dispose(); System.exit(0);
    }
    });
    }
    }
    4.總結程式碼
    靜態內部類
    是指被宣告為static的內部類,他可以不依賴內部類而例項,而通常的內部類需要例項化外部類,從而例項化。靜態內部類不可以有與外部類有相同的類名。不能訪問外部類的普通成員變數,但是可以訪問靜態成員變數和靜態方法(包括私有型別)
    一個 靜態內部類去掉static 就是成員內部類,他可以自由的引用外部類的屬性和方法,無論是靜態還是非靜態。但是不可以有靜態屬性和方法、
    區域性內部類 就是定義在一個程式碼塊的內類,他的作用範圍是所在程式碼塊,是內部類中最少使用的一型別。區域性內部類跟區域性變數一樣,不能被public ,protected,private以及static修飾,只能訪問方法中定義final型別的區域性變數。
    匿名內部類
    是一種沒有類名的內部類,不使用class,extends,implements,沒有建構函式,他必須繼承其他類或實現其他介面。匿名內部類的好處是使程式碼更加簡潔,緊湊,但是帶來的問題是易讀性下降。他一般應用於GUI程式設計來實現時間處理等 。
    在使用匿名內部類時,需要牢記以下幾個原則。
    1》內部類沒有構造方法
    2》匿名內部類不能定義靜態成員,方法和類
    3》匿名內部類不能是public protected private static
    4》只能建立匿名內部類的一個例項
    5》一個匿名內部類可以在new後面,這個匿名類必須繼承一個父類或實現介面
    6》因為匿名內部類為區域性內部類,所以區域性內部類的所有限制都對其生效