1. 程式人生 > >java面試之內部類

java面試之內部類

1、靜態內部類

定義在一個類裡,並在定義時加上static關鍵字,被編譯成一個完全獨立的.class檔案,名稱為OuterClass$InnerClass.class的形式,只可以訪問外部類的靜態成員和靜態方法,包括了私有的靜態成員和方法。

定義方式:OutClass.InnerClass inner = new OutClass.InnerClass()

2、成員內部類

 也是定義在一個類裡,可以訪問它的外部類的所有成員變數和方法,不管是靜態的還是非靜態的都可以

定義方式:OutClass.InnerClass inner = new OutClass().new InnerClass()

3、區域性內部類

區域性內部類定義在方法中,比方法的範圍還小;像區域性變數一樣,不能被public, protected, privatestatic修飾。只能訪問方法中定義的final型別的區域性變數,但是可以訪問外部類的所有成員變數

定義方法:直接通過呼叫外部類物件的方法來使用區域性內部類。

4、匿名內部類

匿名內部類就是沒有名字的區域性內部類,不使用關鍵字class, extends, implements, 沒有構造方法,通常是作為一個方法引數。匿名內部類隱式地繼承了一個父類或者實現了一個介面。