內部類也就是定義在類內部的類,可以將其分為以下四種:
1、成員內部類、
2、區域性內部類、
3、靜態內部類、
4、匿名內部類
一、成員內部類
1、四個訪問許可權修飾符都可以修飾成員內部類。
2、內部類和外部類在編譯時是不同的兩個類,即在編譯時生成的各自的位元組碼檔案(outer.class和outer$inner.class),沒有任何依賴。
3、內部類中可以訪問外部類的成員,包括靜態成員、例項成員和私有成員。
4、內部類作為外部類的乙個成員存在,與外部類的屬性、方法並列。
5、內部類中的例項變數和外部類的例項變數可以同名。
6、在內部類中訪問其本身的例項變數:this.屬性
7、在內部類訪問外部類的例項變數:外部類名.this.屬性。
8、在外部類的外部建立內部類物件,使用outer.inner obj=new outer().new inner()的形式。
9、用內部類定義在外部類中不可訪問的屬性,這樣就在外部類中實現了比外部類的private還要小的訪問許可權。
10、成員內部類不能含有靜態成員。
二、靜態內部類
1、靜態內部類定義在類中,任何方法外,用static class定義。
2、靜態內部類只能訪問外部類的靜態成員。
3、生成(new)乙個靜態內部類物件不需要外部類物件,即靜態內部類的物件可以直接生成:outer.inner in=new outer.inner(),這是靜態內部類和成員內部類的區別。
4、靜態內部類的一般用途是,在進行乙個大型專案時,程式設計師們定義的類可能會重複,產生衝突,利用靜態公有內部類可以解決這個問題。
三、區域性內部類
1、在方法中定義的內部類稱為區域性內部類。
2、與區域性變數類似,在區域性內部類前不加修飾符public和private,其範圍為定義它的**塊。
3、區域性內部類不僅可以訪問外部類私有例項變數,還可以訪問外部類方法的區域性常量(也就是區域性變數必須為final的)。
4、在類外不可直接訪問區域性內部類(保證區域性內部類對外是不可見的),只有在方法中才能呼叫其區域性內部類。
5、通過內部類和介面達到乙個強制的弱耦合,用區域性內部類來實現介面,並在方法中返回介面型別,使區域性內部類不可見,遮蔽實現類的可見性。
6、區域性內部類不能宣告為static。
四、匿名內部類
1、乙個類用於繼承其他類或是實現介面,並不需要增加額外的方法,只是對繼承方法的事先或是覆蓋。
2、只是為了獲得乙個物件例項,不許要知道其實際型別。
3、類名沒有意義,也就是不需要使用到。
Java內部類 Java例項內部類
例項內部類是指沒有用 static 修飾的內部類。示例 如下 public class outer 上述示例中的 inner 類就是例項內部類。例項內部類有如下特點。1 在外部類的靜態方法和外部類以外的其他類中,必須通過外部類的例項建立內部類的例項。public class outer inner1...
Java內部類 靜態內部類
靜態內部類是外部類的靜態成員,不依賴於外部類的物件而存在,因此在外部類外面建立靜內部類物件時不需要首先建立外部類的物件 靜態內部類也可以稱為靜態巢狀類或頂級巢狀類。靜態內部類與外部類物件之間不存在著對成員的共享關係,靜態內部類其實已經脫離了外部類的控制 static關鍵字只是說明其在建立物件的時候不...
Java內部類與匿名內部類
定義在類中方法之外的內部類分為例項內部類和靜態內部類.例項內部類自動持有外部類的例項的引用,即可以訪問外部類的所有變數 靜態內部類可以直接訪問外部類的靜態成員 定義在方法中的內部類叫區域性內部類,該類只能訪問被final修飾的區域性變數和引數 介面定義如下 inte ce super 例子1 pub...